![使用 Supervisord 而不是 Sytemctl 来管理进程](https://linux22.com/image/725258/%E4%BD%BF%E7%94%A8%20Supervisord%20%E8%80%8C%E4%B8%8D%E6%98%AF%20Sytemctl%20%E6%9D%A5%E7%AE%A1%E7%90%86%E8%BF%9B%E7%A8%8B.png)
我有一个 VPN 服务,想通过 Supervisord 进行管理。
当 VPN 服务自行安装时,它会在 中创建一个条目/etc/systemd/system/pgateway.service
。内容如下:
[Unit]
Description=Cradlepoint NetCloud Client that provides access to secure overlay networks.
After=network.target
[Service]
Type=forking
PIDFile=/run/pGateway.pid
ExecStartPre=/bin/rm -f /run/pGateway.pid
ExecStart=/opt/pertino/pgateway/pGateway -f -p /run/pGateway.pid
TimeoutStopSec=30
Restart=on-abort
KillMode=process
[Install]
WantedBy=basic.target
有时,此进程会终止并需要重新启动。由于我拥有用于管理 Supervisorctl 的远程 Web 界面,因此我想通过 Supervisord 来管理此 VPN 进程。
这会是一件容易的事吗?我遗漏了什么重要的事情吗?让我困惑的是,supervisord 没有指定管理pid
文件的方法(如果我甚至需要担心这一点的话……)
我可以在我的 ? 中做类似以下的事情吗supervisor.conf
:
[program:pgateway]
command=/opt/pertino/pgateway/pGateway -f -p /run/pGateway.pid
process_name=%(program_name)s
numprocs=1
directory=/tmp
umask=022
priority=999
autostart=true
autorestart=unexpected
startsecs=10
startretries=3
exitcodes=0,2
stopsignal=TERM
stopwaitsecs=10
stopasgroup=false
killasgroup=false
user=root
redirect_stderr=false
stdout_logfile=/a/path
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stdout_events_enabled=false
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
stderr_events_enabled=false
environment=A="1",B="2"
serverurl=AUTO