前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 supervisor 管理监控进程

使用 supervisor 管理监控进程

作者头像
reizhi
发布2022-09-26 15:27:57
8680
发布2022-09-26 15:27:57
举报
文章被收录于专栏:reizhireizhi

有时我们会在 Linux 服务器上安装运行一些非服务方式启动的程序,如 Python 程序或 nodejs 程序等,他们无法可靠的保持运行,也无法在出现错误后自动重启。这时我们就需要 Supervisor 来监控程序的运行,在意外终止时自动重启程序。

Debian 软件源已自带 Supervisor ,直接使用 apt 安装即可:apt-ge install supervisor。

安装完成后需要创建配置文件,进入 /etc/supervisor/conf.d 目录后,新建一个配置文件,如:example.conf,内容如下:

[program:ss] command=bash /root/ssmgr.sh autorestart=true directory=/root startretries=10000 user=root redirect_stderr=true stdout_logfile=/root/ss.log stderr_logfile=/root/ss.log

其中,program 为程序的名称,command 为需要执行的命令,如果需要在程序退出后自动重启,设置 autostart=true 即可;directory 为程序运行目录,startretries 可以设置启动失败时的尝试次数;user 则是进程运行的用户身份。如果还需要开启日志,按照以上配置填写最后三行即可。

为了更方便的远程管理 Supervisor ,我们还可以开启其自带的 web 控制台。打开 /etc/supervisor/supervisord.conf ,在文件末尾增加以下内容:

[inet_http_server] port=*:5000 username=user password=123

其中,port 为监听端口,username 和 password 分别为帐号和密码。保存文件后需要重启 Supervisor:service supervisor restart,即可通过 5000 端口访问 web 控制台了。

如需通过 shell 来管理 supervisor ,可以使用以下命令:

supervisorctl start appname #启动特定程序 supervisorctl stop appname #停止特定程序 supervisorctl restart appname #重启特定程序 supervisorctl start all #启动所有程序 supervisorctl stop all #停止所有程序 supervisorctl restart all #重启所有程序

最后需要注意的是,如果使用 Supervisor 监控 shell 脚本,不能在脚本中完全使用 nohup, setsid 等后台运行命令,否则 supervisor 会误认为程序自动退出而不断重启脚本。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年4月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档