Supervisor执行Bash管道操作残留子进程
嘻嘻发布于2023-06-03
最后更新于2023年5月17日
浏览Supervisor是一个非常流行的linux进程管理器,可以使得管理进程更加容易和安全。
Supervisor最流行的应用场景是常驻进程的管理,比如Web服务和后台守护进程。由于Web服务和守护进程往往需要持续一直运行,所以我们会需要一个进程管理器来确保他们的运行状态。Supervisor就是这样一个非常好用的管理器,它非常简单易用,并且具备广泛的功能。
执行单个命令
安装下面的配置,正常使用c start|stop|restart XXX
都没有问题
[program:kohya_ss]
command=command1
directory=/home/kohya/kohya_ss
autostart=true
autorestart=true
redirect_stderr=true
priority=10
user=kohya
stdout_logfile=/home/kohya/kohya_ss/logs/supervisor.log
执行Bash文件
[program:kohya_ss]
command=bash /home/kohya/kohya_ss/gui.sh
directory=/home/kohya/kohya_ss
autostart=true
autorestart=true
redirect_stderr=true
priority=10
user=kohya
stdout_logfile=/home/kohya/kohya_ss/logs/supervisor.log
使用supervisorctl start|stop|restart XXX
发现supervisorctl的状态一直,但是如果检查服务的端口lsof -i :9091
发现服务还在, 残留子进程
执行Bash 命令
[program:kohya_ss]
command=bash -c "command1|command2"
directory=/home/kohya/kohya_ss
autostart=true
autorestart=true
redirect_stderr=true
priority=10
user=kohya
stdout_logfile=/home/kohya/kohya_ss/logs/supervisor.log
最后如果要避免操作残留子进程需要加上下面的配置:
killasgroup=true
stopasgroup=true