69人参与 • 2026-05-12 • Linux
在 linux 服务器上安装和配置 supervisor(一个用于进程管理的工具,常用于守护长时间运行的程序)的步骤如下:
# 启用 epel 仓库(centos/rhel) sudo yum install epel-release # centos 7 或更早 sudo dnf install epel-release # centos 8+/fedora # 安装 supervisor sudo yum install supervisor # centos 7 sudo dnf install supervisor # centos 8+/fedora
sudo apt update sudo apt install supervisor
如果系统包管理器没有 supervisor,可以用 pip 安装:
sudo apt install python3-pip # debian/ubuntu sudo yum install python3-pip # centos/rhel sudo pip3 install supervisor
# 启动 supervisor sudo systemctl start supervisord # 设置开机自启 sudo systemctl enable supervisord # 检查状态 sudo systemctl status supervisord
supervisor 的主配置文件通常位于:
/etc/supervisord.conf(主配置文件)/etc/supervisor/conf.d/(子配置文件目录); sample supervisor config file. [unix_http_server] file=/etc/supervisor/supervisor.sock ; (the path to the socket file) [supervisord] logfile=/var/log/supervisord.log ; (main log file;default $cwd/supervisord.log) logfile_maxbytes=50mb ; (max main logfile bytes b4 rotation;default 50mb) logfile_backups=10 ; (num of main logfile rotation backups;default 10) loglevel=info ; (log level;default info; others: debug,warn,trace) pidfile=/etc/supervisor/supervisord.pid ; (supervisord pidfile;default supervisord.pid) nodaemon=false ; (start in foreground if true;default false) minfds=65535 ; (min. avail startup file descriptors;default 1024) minprocs=4096 ; (min. avail process descriptors;default 200) [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///etc/supervisor/supervisor.sock ; 默认是配置在 /tmp 目录下,避免长时间未使用导致文件被删除,建议修改为 /etc/superviosr的目录下 [include] files = /home/workspace/*/shell/supervisor.conf ;默认加载路径可以自己定义
创建子配置文件:
sudo vi /etc/supervisor/conf.d/myapp.conf
添加以下内容:
[program:myapp] command=/usr/bin/java -jar /path/to/myapp.jar # 替换为你的命令 directory=/path/to/ # 工作目录(可选) user=root # 运行用户(可选) autostart=true # 随 supervisor 启动 autorestart=true # 崩溃时自动重启 stderr_logfile=/home/logs/appname/myapp.err.log # 错误日志 stdout_logfile=/home/logs/appname/myapp.out.log # 输出日志 environment=home="/home/user",user="user" # 环境变量(可选)
检查配置语法:
sudo supervisord -c /etc/supervisord.conf # 或 sudo supervisorctl reread sudo supervisorctl update
# 查看所有进程状态 sudo supervisorctl status # 启动/停止/重启某个进程 sudo supervisorctl start myapp sudo supervisorctl stop myapp sudo supervisorctl restart myapp # 重新加载所有配置(新增/修改配置后) sudo supervisorctl reread sudo supervisorctl update # 查看日志 sudo supervisorctl tail myapp stderr # 查看错误日志 sudo supervisorctl tail myapp stdout # 查看输出日志
/var/log/supervisor/supervisord.logstderr_logfile 和 stdout_logfile。如果 supervisor 没有自动启动,可以手动设置:
sudo systemctl enable supervisord
sudo systemctl stop supervisord sudo yum remove supervisor sudo rm -rf /etc/supervisor /var/log/supervisor
sudo systemctl stop supervisord sudo apt purge supervisor sudo rm -rf /etc/supervisor /var/log/supervisor
yum/apt/pip install supervisorsystemctl start supervisord/etc/supervisor/conf.d/ 下添加 .conf 文件supervisorctl start/stop/restart <程序名>/var/log/supervisor/ 或配置的日志路径supervisor 适合管理长时间运行的进程(如 web 应用、队列任务等),比直接使用 nohup 或 & 更可靠!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论