我正在开发一个系统,它的主要启动系统是runit。
不幸的是,runit要求它正在运行的应用程序在前台运行,如下所示:
#!/bin/bash
exec sshd -D由于nginx没有提供在前台运行它的方法,我如何让runit仍然管理nginx并能够使用runit的sv命令停止、启动和重新启动它?
发布于 2014-07-30 08:30:03
您可以使用选项daemon off:
exec /usr/sbin/nginx -c /etc/nginx/nginx.conf -g "daemon off;"来自nginx维基:
您可以使用runit / daemontools在生产模式下安全地使用守护进程,但是您不能进行优雅的升级。master_process off不应用于生产。
当您使用runit控制nginx时,它将成为nginx主进程的父进程。但是,如果您试图进行在线升级,nginx主进程将分叉并执行新的二进制文件。
创建了一个新的主进程,但是由于旧的主进程仍然存在(因为它由runit控制),新主进程的父进程将是init进程,因为runit无法控制新的主进程,因为它没有启动它。
https://unix.stackexchange.com/questions/147342
复制相似问题