Supervisor是一个Python编写的进程管理工具,支持Linux/Unix系统(不支持Windows),可以很方便的启动、停止、重启多个进程,可以在程序意外退出后自动重启,记录并输出所有控制台日志,免去了自己编写shell脚本的麻烦,十分方便快捷。
一、安装并初始化
apt install supervisor #安装 systemctl enable supervisor #设置开机自启 supervisord #初始化
二、添加配置
Supervisor的默认配置目录在/etc/supervisor/conf.d/下,以下是一个例子
vim /etc/supervisor/conf.d/slimchat.conf #slimchat为自定义名称,下同 [program:slimchat] command=npm start 启动命令 directory=/home/wwwroot/www.slimchat.ml/SlimChat/ 目录 autostart=true 是否自启 autorestart=true 进程退出后是否自动重启 stderr_logfile=/var/log/slimchat.err.log 错误日志 stdout_logfile=/var/log/slimchat.out.log 输出日志 user=www 用户身份 stopsignal=INT
三、管理命令
supervisorctl status slimchat #查看进程状态(使用自定义的名称)
supervisorctl stop slimchat #停止
supervisorctl start slimchat #启动
supervisorctl restart slimchat #重启
supervisorctl reload #重启整个服务(注意!此命令会重启所有进程,不推荐)
更新配置后的正确方法:
supervisorctl reread
supervisorctl update
四、常见问题
错误信息:
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
解决方法:
find / -name supervisor.sock unlink /run/supervisor.sock supervisord