我在/etc/supervisor/conf.d/myscript.conf
中有这个[program:my_script]
directory=/var/www/myfolder
command=/var/www/myscript.sh
numprocs=1
process_name=%(program_name)s
autostart=true
autorestart=true
user=root
stopsignal=KILL
这是myscript.sh的内容:
#!/bin/bash
cp -n /var/www/binaryfolder/binaryfile /var/www/myfolder
/var/www/myfolder/binaryfile
这是有效的,但是当我停止管理程序时,这个二进制文件一直在运行。
我知道会有一些问题,例如为什么不手动复制该文件然后由主管执行,但这是不可能的,因为该文件动态传递给myscript.sh。
谢谢
答案 0 :(得分:0)
由于启动binaryfile
是最后一个命令,您可以通过将myscript.sh修改为
#!/bin/bash
cp -n /var/www/binaryfolder/binaryfile /var/www/myfolder
exec /var/www/myfolder/binaryfile
请注意,exec
添加在最后一行的开头,用二进制文件进程替换shell进程,因此supervisord会停止该进程。有关更多信息,请查看
http://veithen.github.io/2014/11/16/sigterm-propagation.html
如果您完全想从supervisord配置中解决此问题并且您的supervisord版本大于或等于3.0b1,则可以添加stopasgroup=true
参数。
所以你的新配置文件应该是
[program:my_script]
directory=/var/www/myfolder
command=/var/www/myscript.sh
numprocs=1
process_name=%(program_name)s
autostart=true
autorestart=true
user=root
stopsignal=KILL
stopasgroup=true
有关supervisord配置的更多信息,请检查: http://supervisord.org/configuration.html#program-x-section-settings