
一、命令简介supervisord 是一个基于 Python 开发的进程管理工具用于在类 Unix 系统如 Linux中配置、启动、停止和监控后台服务或常驻进程。它可以将一个普通的命令行进程转换为后台守护进程并在进程异常退出时自动重启确保服务的持续可用性。supervisord 通常与 supervisorctl 命令行客户端配合使用实现对进程的集中管理。二、语法格式启动 supervisord 守护进程的基本语法为bash运行supervisord [options]主要组件说明supervisord服务端守护进程负责启动、管理配置中定义的子进程。 supervisorctl客户端命令行工具用于控制 supervisord 管理的进程如 start, stop, restart 等。 配置文件默认为 /etc/supervisor/supervisord.conf用于定义要管理的程序及其运行参数。三、常用选项及说明表格选项说明-c, --configuration FILENAME指定配置文件路径默认为 /etc/supervisor/supervisord.conf。-n, --nodaemon在前台运行不作为守护进程常用于调试。-h, --help显示帮助信息并退出。-v, --version显示版本信息并退出。-u, --user USER以指定用户身份运行 supervisord需 root 权限。-d, --directory DIRECTORY在启动前切换到指定目录。-l, --logfile FILENAME指定日志文件路径。-y, --logfile_maxbytes BYTES设置日志文件最大字节数。-z, --logfile_backups NUM设置保留的日志备份数量。-e, --loglevel LEVEL设置日志级别如 info, warn, error, debug。-j, --pidfile FILENAME指定 PID 文件路径。-m, --umask UMASK设置进程的 umask八进制格式。-a, --childlogdir DIRECTORY设置子进程日志目录。四、示例用法4.1 安装在基于 Debian/Ubuntu 的系统上安装bash运行sudo apt-get update sudo apt-get install supervisor安装后系统会自动创建默认配置文件 /etc/supervisor/supervisord.conf 和配置目录 /etc/supervisor/conf.d/。4.2 配置一个后台服务在 /etc/supervisor/conf.d/ 目录下为你的应用创建配置文件例如 myapp.confini[program:myapp] command/usr/bin/gunicorn -w 4 myapp:app ; 要执行的命令 directory/var/www/myapp ; 执行命令时的工作目录 userwww-data ; 运行进程的用户 autostarttrue ; 随 supervisord 启动而启动 autorestarttrue ; 进程退出后自动重启 redirect_stderrtrue ; 将标准错误重定向到标准输出 stdout_logfile/var/log/myapp.log ; 标准输出日志路径 environmentKEYvalue ; 设置环境变量4.3 启动 supervisord 服务安装后supervisord 通常作为系统服务运行。启动并设置开机自启bash运行sudo systemctl start supervisor sudo systemctl enable supervisor或直接使用 supervisord 命令指定配置文件bash运行sudo supervisord -c /etc/supervisor/supervisord.conf4.4 使用 supervisorctl 管理进程bash运行# 启动一个配置的程序 sudo supervisorctl start myapp # 停止一个程序 sudo supervisorctl stop myapp # 重启一个程序 sudo supervisorctl restart myapp # 查看所有程序状态 sudo supervisorctl status # 重新加载配置文件当添加或修改配置后 sudo supervisorctl reload # 更新配置仅重新加载有变化的配置 sudo supervisorctl update # 进入交互式控制台 sudo supervisorctl4.5 查看日志bash运行# 查看 supervisord 主日志 sudo tail -f /var/log/supervisor/supervisord.log # 查看特定程序的输出日志 sudo tail -f /var/log/myapp.log五、注意事项配置文件格式必须使用正确的 INI 格式每个[program:xxx]段定义一个进程。修改配置后需执行supervisorctl reload或supervisorctl update生效。权限问题确保 supervisord 进程及其子进程有适当的文件系统权限如日志目录、工作目录等。环境变量子进程默认不会继承 supervisord 的环境变量需在配置中通过environment选项显式设置。日志管理合理配置日志轮转避免日志文件无限增长占用磁盘空间。与系统服务集成在生产环境中建议通过 systemd 或 init 系统管理 supervisord 本身以确保其高可用。资源限制可通过配置设置进程的资源限制如 minfds, minprocs 等防止资源泄露。依赖包supervisord 依赖 Python 和 meld3 包确保它们已正确安装。六、相关资源官方文档http://supervisord.org/PyPI 项目页面 https://pypi.python.org/pypi/supervisor https://pypi.python.org/pypi/meld3GitHub 仓库https://github.com/Supervisor/supervisor通过以上配置和管理supervisord 可以有效地将各种后台进程如 Web 服务器、队列处理器、自定义脚本等转化为稳定、可监控的守护进程是服务运维中常用的轻量级进程管理方案。