我使用 bash 运行以下命令来启动 Django 应用程序,即使我从该 shell 退出也没有任何问题。
python manage.py runfcgi daemonize=true ...
当 Jenkins 运行上面相同的命令时,Django 应用程序运行以及使用 bash 运行。但是为什么在作业结束时应用程序会被杀死?
我猜 Jenkins 会为每个作业启动一个新的 shell 会话,然后在作业完成时关闭它。这将终止在该会话中启动的任何进程。
如果您希望进程在关闭会话后继续存在,您可以使用以下命令启动它nohup
:
nohup python manage.py runfcgi daemonize=true ...
过去我在使用fabric 时遇到过类似的问题——即使我将daemonize 标志设置为true,服务也会终止。我曾经nohup
解决它。
我在这里找到了一个解决方案,它适用于我 https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller