应用场景
工作中可能要写一些cli脚本,需要后台运行,一般会用 nohup command &
nohup /usr/bin/php /www/test.php >> /var/log/test.log 2>&1 &
但这样会有一些问题,不能监控进程状态,异常退出时不能自动重启,这时候 supervisor 是更好的选择
注意:像nginx, mysql, php-fpm等,还是推荐系统级的systemctl
安装
#centos/redhat/fedora
yum install supervisor
#Debian/Ubuntu可通过apt安装
apt-get install supervisor
#pip安装
pip install supervisor
#easy_install安装
easy_install supervisor
#启动
supervisord -c /etc/supervisor/supervisord.conf
配置
新建一个脚本的配置文件
vi /etc/supervisor/conf.d/demo.conf
;demo表示程序名称
[program:demo]
;需要执行的命令
command=php demo.php
;命令执行的目录
directory=/var/www/demo/beanstalkd/demo0/
;环境变量
environment=PATH="/usr/local/bin/"
;哪个用户运行
user=root
;是否自启动
autostart=true
;是否自动重启
autorestart=true
;自动重启时间间隔,单位秒
startsecs=3
;错误日志文件
stderr_logfile=/tmp/demo.err.log
;输出日志文件
stdout_logfile=/tmp/demo.out.log
保存后reload一下,使生效
supervisorctl reload
脚本文件 demo.php
<?php
$i = 0;
while(true) {
$i++;
echo $i, PHP_EOL;
sleep(1);
}
web界面
vi /etc/supervisor/supervisord.conf
;增加
[inet_http_server]
port=0.0.0.0:9001
username=admin
password=123456
保存后reload一下,使生效
supervisorctl reload
然后访问 http://localhost:9001/,即可看到如下界面
常用命令
#启动进程
supervisorctl start xxx
#重启进程
supervisorctl restart xxx
#重启所有属于名为group的分组进程
supervisorctl stop group
#停止全部进程
supervisorctl stop all
#载入最新配置的文件
supervisorctl reload
#根据最新的配置文件,启动新配置或有改动的进程
supervisorctl update
#查看日志文件
/var/log/supervisor
正文完