如下supervisor的进程的comand配置参数只能写一个命令
1、要执行多条命令,可以写个sh文件包含多条命令,然后
sh -x xxxx.sh
,但这样又多了一个文件,
2、把所有命令放在字符串,然后用eval来执行,这样在shell窗口可以执行,但放在supervisor报找不到eval命令。比如:
command = eval "cd /etc/init.d&&./jenkins start"
这样不能在supervisor运行。
3、改成
/bin/bash -c "cd /etc/init.d&&./jenkins start"
后可以正常运行。当然如果只是指定某个目录下执行,supervisor可以配置文件中指定执行的目录:
#命令执行的目录 directory=/my/publish/test-api/
另外,要特外提一下supervisor的就是supvervisor的开机启动是在/ect/systemd/system/supvervisord.service,如果指定了目录,则新的配置文件如下:
[Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/bin/supervisord -c /my/software/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl -c /my/software/supervisor/supervisord.conf shutdown ExecReload=/usr/bin/supervisorctl -c /my/software/supervisor/supervisord.conf reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
使用systemctl命令开启启动或者不开机启动这个服务。