Supervisor 是一个进程管理工具,主要用于在 UNIX/Linux 系统上监控和控制长时间运行的进程。它可以自动启动、停止和重启进程,确保服务的高可用性。
主要特点:
- 自动重启:当监控的进程崩溃时,Supervisor 能自动重启它。
- 进程管理:支持管理多个进程及其组,便于统一控制。
- 日志记录:将标准输出和错误输出重定向到日志文件,方便故障排查。
- 简单配置:通过简单的配置文件定义要管理的进程,支持多种参数设置。
- 命令行工具:提供
supervisorctl
命令行工具,方便管理进程。
- 安装
sudo apt-get install supervisor
- 创建配置文件
在 /etc/supervisor/conf.d/ 下创建文件 如:gatewayworker.conf
[program:gatewayworker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/vagrant/code/customer/vendor/GatewayWorker/start.php start
autostart=true
autorestart=true
user=vagrant
numprocs=4
redirect_stderr=true
stdout_logfile=/var/log/supervisor/gatewayworker.log
- 启动supervisor进程
# 重新加载配置文件
sudo supervisorctl reread
# 更新 Supervisor,使新配置生效
sudo supervisorctl update
# 启动 Laravel 队列工作进程
sudo supervisorctl start gatewayworker:*
管理 Supervisor 进程
使用 supervisorctl
来管理队列工作进程,以下是常用命令:
- 查看进程状态:
sudo supervisorctl status
- 启动进程:
sudo supervisorctl start gatewayworker:*
- 停止进程:
sudo supervisorctl stop gatewayworker:*
- 重启进程:
sudo supervisorctl restart gatewayworker:*
检查日志文件
Supervisor 会将输出日志写入指定的文件,使用以下命令实时查看日志,以便检查任务执行情况:
tail -f /var/log/supervisor/gatewayworker.log
使用 systemctl
管理 Supervisor 服务
- 启动 Supervisor:
sudo systemctl start supervisor.service
- 停止 Supervisor:
sudo systemctl stop supervisor.service
- 重启 Supervisor:
sudo systemctl restart supervisor.service
- 查看 Supervisor 状态:
sudo systemctl status supervisor.service
- 设置开机自启:
sudo systemctl enable supervisor.service
- 取消开机自启:
sudo systemctl disable supervisor.service