我正在开发一个主要启动系统是 runit 的系统。
不幸的是,runit 要求它运行的任何应用程序都像这样在前台运行:
#!/bin/bash
exec sshd -D
Run Code Online (Sandbox Code Playgroud)
看到 nginx 没有提供在前台运行它的方法,我如何让 runit 仍然管理 nginx 并能够使用 runit 的sv
命令停止、启动和重新启动它?
您可以使用选项daemon off
:
exec /usr/sbin/nginx -c /etc/nginx/nginx.conf -g "daemon off;"
Run Code Online (Sandbox Code Playgroud)
来自nginx 维基:
您可以使用 runit / daemontools 在生产模式下安全地使用 daemon off,但是您不能进行优雅的升级。master_process off 不应在生产中使用。
当您使用runit
to control 时nginx
,它成为nginx
主进程的父进程。但是如果您尝试进行在线升级,nginx
主进程将分叉并执行新的二进制文件。
创建了一个新的主进程,但由于旧的主进程仍然存在(因为它由 控制runit
),新主进程的父进程将是 init 进程,因为runit
无法控制新的主进程,因为它没有启动它。
归档时间: |
|
查看次数: |
3140 次 |
最近记录: |