#やりたいこと
1. Resqueのサービス停止時に子プロセスで動いているジョブが終了するまで待ってから、サービスを止めたい。
2. サービス起動停止をsystemctlでやりたい。
#困っていること
1は出来たのですが、1で作ったシェルをsystemctlから呼びだすと何故か子プロセスを終了するまで待たず、
止められてしまう。
bin/resque.sh
bash
1#!/bin/bash 2 3FILE_PATH="$0" 4ACTION="$1" 5 6RUN_PATH=`echo ${FILE_PATH} | sed -e 's%/bin/resque.sh%%g'` 7 8cd ${RUN_PATH} 9 10PWD_CHECK=`pwd` 11if [ ${PWD_CHECK} != ${RUN_PATH} ]; then 12 echo "Moving directory failed." 13 exit 1 14fi 15 16export RAILS_ROOT="${RUN_PATH}" 17 18if [ $1 = "start" ]; then 19 QUEUE=* rake resque:work >> "${RUN_PATH}/log/resque_worker.log" 2>&1 & 20 pid=$! 21 echo "${pid}" > "${RUN_PATH}/tmp/pids/resque_worker.pid" 22fi 23 24if [ $1 = "stop" ]; then 25 pid=`cat "${RUN_PATH}/tmp/pids/resque_worker.pid"` 26 kill -s 3 "${pid}" 27 rm -rf "${RUN_PATH}/tmp/pids/resque_worker.pid" 28fi 29 30exit 0
/etc/systemd/system/resque.service
[Unit] Description = resque service daemon After=redis.service [Service] PIDFile=/etc/rails/tmp/pids/resque_worker.pid WorkingDirectory=/etc/rails ExecStart=/etc/rails/bin/resque.sh start ExecStop=/etc/rails/bin/resque.sh stop Type=forking Restart=on-failure [Install] WantedBy=multi-user.target
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。