Supervisor 管进程:启动、停止、重启、看状态和日志,崩了自动拉起来。拿它托管服务器上的 Go 程序,省得自己写 systemd unit 或 nohup。
装
$ sudo apt-get install supervisor
配置
主配置文件在 /etc/supervisor/supervisord.conf。不确定位置时,可以让它把默认配置打出来:
$ sudo supervisorctl echo_supervisord_conf
这条命令在部分发行版的包里不存在,报找不到就直接用 echo_supervisord_conf,或者看默认路径。
主配置一般不用改,要托管什么进程,就往 /etc/supervisor/conf.d/ 里丢一个配置文件:
$ sudo touch /etc/supervisor/conf.d/myprogram.conf
内容如下,路径和用户名换成自己的:
[program:myprogram]
command=/path/to/your/go/program # 运行go程序的命令,需要修改为实际的路径
directory=/path/to/your/go/program # go程序的目录,需要修改为实际的路径
user=yourusername # 以哪个用户身份运行程序,需要修改为实际的用户名
autostart=true # 启动Supervisor时是否自动启动该进程
autorestart=true # 程序崩溃时是否自动重启该进程
redirect_stderr=true # 是否将标准错误重定向到日志文件
stdout_logfile=/tmp/myprogram.log # 标准输出的日志文件路径,需要修改为实际的路径
directory 要写程序所在目录,因为 Go 程序经常按相对路径读配置,工作目录不对会直接启动失败。
生效
$ sudo supervisorctl reread
$ sudo supervisorctl update
reread 只是重读配置,update 才真正把新增或修改的进程应用上去。
日常操作
$ sudo supervisorctl status myprogram
$ sudo supervisorctl start myprogram
$ sudo supervisorctl stop myprogram
$ sudo supervisorctl restart myprogram
评论
还没有人留言。