美文网首页
Supervisor 进程管理工具使用

Supervisor 进程管理工具使用

作者: 左诗右码 | 来源:发表于2023-11-27 00:01 被阅读0次

Supervisor 是一个进程管理工具,当进程中断的时候 supervisor 能自动重新启动它,同时,它也是一个客户端/服务器系统,允许用户在类 unix 操作系统上控制多个进程。

Supervisor 是用 Python 开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台 daemon,并监控进程状态,异常退出时能自动重启。

Supervisor 是通过 fork/exec 的方式把这些被管理的进程当作 Supervisor 的子进程来启动,这样只要在 Supervisor 的配置文件中,把要管理的进程的可执行文件的路径写进去即可。

接下来我们重点学习它的使用方式。

Supervisor 一些常用命令

命令 说明
supervisorctl reload 重启 supervisor (添加完自己的配置信息后,可以执行此命令来重新加载 supervisor 配置文件)
supervisorctl status <程序名> 查看状态,后面不加程序名的话是查看所有任务状态
supervisorctl shutdown 关闭所有任务
supervisorctl start <程序名> 启动任务
supervisorctl stop <程序名> 关闭任务

在阿里云 CentOS 7.6 上

  • 安装 supervisor
yum install -y supervisor
  • 查看主配置信息 supervisord.conf 留意 include 选项
cat /etc/supervisord.conf

# 这里决定了你所需要写的进程配置文件格式,这里是 ini ,因此我们也必须写成 ini 后缀的文件
[include]
files = supervisord.d/*.ini

  • 添加自定义进程配置信息

vim /etc/supervisord.d/larablog.ini


[program:larablog-horizon]
process_name=%(program_name)s
command=php /www/wwwroot/larablog/artisan horizon
autostart=true
autorestart=true
user=www
redirect_stderr=true
stdout_logfile=/www/wwwroot/larablog/storage/logs/worker.log

  • program:larablog-horizon 代表这个配置的名称是 larablog-horizon;
  • process_name= 代表这个进程在 Supervisor 内部的命名;
  • command= 代表要执行的命令;
  • autostart=true 代表这个进程跟随 Supervisor,只要 Supervisor 启动了,就启动这个进程;
  • autorestart=true 代表要求 Supervisor 监听进程状态,假如异常退出就再次启动,重启次数默认有 3 次限制;
  • user=www 代表以 www 身份启动进程;
  • redirect_stderr=true 代表输出错误信息;
  • stdout_logfile= 代表将进程的输出保存到日志文件中。
  • 更新配置
sudo supervisorctl update

如果遇到报错 error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socket.py line: 224 则执行以下命令

sudo supervisord -c /etc/supervisord.conf

# 再次尝试执行重载配置命令
sudo supervisorctl update

sudo supervisorctl -c /etc/supervisord.conf
  • 查看进程状态
sudo supervisorctl status

在 ubuntu 上

  • 安装 supervisor
sudo apt-get install supervisor
  • 添加自定义进程配置信息

vim /etc/supervisor/conf.d/larablog.conf


[program:larablog-horizon]
process_name=%(program_name)s
command=php /www/wwwroot/larablog/artisan horizon
autostart=true
autorestart=true
user=www
redirect_stderr=true
stdout_logfile=/www/wwwroot/larablog/storage/logs/worker.log

  • 更新配置
sudo supervisorctl update
  • 检查是否正常运行
sudo supervisorctl status
  • 单独启动一个指定名称的进程
sudo supervisorctl start <process-name>

# 比如启动名称为 larablog-horizon 的进程
sudo supervisorctl start larablog-horizon

相关文章

网友评论

      本文标题:Supervisor 进程管理工具使用

      本文链接:https://www.haomeiwen.com/subject/aulzwdtx.html