
私は、capistrano を使用して Python サービスをデプロイしています。サービスを開始し、pidfile も書き込んで、後でサービスを再起動したり停止したりできるようにしようとしていました。問題は、pidfile が常にプロセス ID の 1 つ後ろにあることですが、その理由はよくわかりません。たとえば、pidfile が 123 の場合、実際に実行されているプロセスは 124 です。手動で 1 つ追加する必要がありますか? それとも、コマンドの書き方が間違っていますか? 疑似コマンドをここに記述します。
nohup python ./service.py special_argument --config /some_folder/devel.yml --log logs/service.log > /dev/null 2>&1& echo $! > /some_folder/pids/special_argument.pidfile
答え1
Python スクリプトに独自の pidfile を書き込むように委任することで、この問題を回避しました。