一直用 linux 的 screen 做自己服务器上需要常驻进程的管理工具,主要是使用的确简单,无需繁琐的配置,奈何重启总是需要先kill掉存在的进程,然后再重开一个 screen ,不想重复这样操作,就只好学习一下Supervisor的使用了。
# ubuntu
apt-get install supervisor
# centos
# yum install 的方式
yum install -y supervisor
# easy_install的方式
yum install -y python-setuptools
easy_install supervisor
echo_supervisord_conf >/etc/supervisord.conf
vim /etc/supervisor/conf.d/xxx.conf
[program:confd]
;程序的启动目录
;directory = /usr/local/bin
;进程名称
process_name=%(program_name)s_%(process_num)02d
; 启动命令,与命令行启动的命令是一样的
command = sudo /usr/bin/php7.3 /win_10_c/apiserver/artisan queue:work --sleep=3 --tries=3 --timeout 60
; 在 supervisord 启动的时候也自动启动
autostart = true
; 启动 5 秒后没有异常退出,就当作已经正常启动了
startsecs = 5
; 程序异常退出后自动重启
autorestart = true
; 启动失败自动重试次数,默认是 3
startretries = 3
; 用哪个用户启动
user = root
; 把 stderr 重定向到 stdout,默认 false
redirect_stderr = true
; stdout 日志文件大小,默认 50MB
stdout_logfile_maxbytes = 20MB
; stdout 日志文件备份数
stdout_logfile_backups = 20
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /etc/supervisord.d/log/confd.log ;日志统一放在log目录下
; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改 PYTHONPATH
; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere
# 停止某一个进程(programxxx),programxxx 为 [program:beepkg] 里配置的值,这个示例就是 beepkg
supervisorctl stop programxxx
# 启动某个进程。
supervisorctl start programxxx
# 重启某个进程。
supervisorctl restart programxxx
# 查看进程状态
supervisorctl status
# 重启所有属于名为 groupworker 这个分组的进程(start,restart 同理)。
supervisorctl stop groupworker
# 停止全部进程,注:start、restart、stop 都不会载入最新的配置文件。
supervisorctl stop all
# 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl reload
# 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
supervisorctl update
-- END
写的不错,赞助一下主机费
暂无评论~~