bashを使用して次のコマンドを実行し、シェルを終了しても問題なくDjangoアプリケーションを起動します。
python manage.py runfcgi daemonize=true ...
Jenkinsが上記と同じコマンドを実行すると、Djangoアプリケーションが実行され、bashを使用して実行されます。しかし、ジョブが終了したときにアプリケーションが強制終了されるのはなぜですか?
Jenkinsは、ジョブごとに新しいシェルセッションを開始し、ジョブが完了するとそれを閉じていると思います。これにより、そのセッションで開始されたすべてのプロセスが終了します。
セッションを閉じた後もプロセスを持続させたい場合は、次のコマンドで開始できますnohup
。
nohup python manage.py runfcgi daemonize=true ...
過去にファブリックを使用して同様の問題が発生しました。daemonizeフラグをtrueに設定しても、サービスが終了していました。私nohup
はそれを回避するために使用しました。
私はここで解決策を見つけました、そしてそれは私のために働きます https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller