sinatra init script
sinatraの起動スクリプトかいてみた。といっても大部分は既存の起動スクリプトを見ながら書いてるけど…。
サイトごとに適宜書き換えて、別のサービスとしてchkconfigに追加したりしてる。
しかるべき箇所を書き換えればsinatra以外にも使える……はず。
#!/bin/bash # # chkconfig: - 85 15 # description: sinatra-y17-mydns-jp # PROG_NAME="sinatra-y17-mydns-jp" PID_FILE="/tmp/${PROG_NAME}.pid" LOG_FILE="/opt/domains/y17.mydns.jp/logs/y17-sinatra_log-$(date +%Y%m%d-%H%M%S)" INIT_COMMAND="/usr/bin/ruby /usr/bin/shotgun -o 127.0.0.1 -p 3080 /opt/domains/y17.mydns.jp/sinatra/y17.rb" start() { if test -e $PID_FILE; then PID="$(cat ${PID_FILE})" echo "[ERROR] ${PROG_NAME} is already running (pid $PID)" exit 1 fi echo -n "Starting ${PROG_NAME} .. " nohup ${INIT_COMMAND} > ${LOG_FILE} 2>&1 & # PID=$$ PID=$(ps -o pid,command ax | grep -e "${INIT_COMMAND}" | grep -v grep | head | awk '{print $1}') if test $? -eq 0; then echo "[ OK ]" echo $PID > "${PID_FILE}" else echo -n "[FAILED]" exit 1 fi } stop() { if test -e ${PID_FILE}; then PID="$(cat ${PID_FILE})" else echo "[ERROR] ${PROG_NAME} is already stopped." exit 1 fi echo -n "Stopping ${PROG_NAME} .. " kill ${PID} if test $? -eq 0; then echo "[ OK ]" rm ${PID_FILE} else echo "[FAILED]" exit 1 fi } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac