使用supervisor监控管理Linux服务进程

Supervisor Docs

使用ssh远程维护VPS时候,要在后台挂起一个程序。挂起程序很简单,在command后加上&符号就可以,但是当断开ssh时候,挂起的程序也随之killed, 很是恼火。在使用nohup 的时候意外发现了supervisor, supervisor使用python开发,通过配置文件来配置需要启动监管的程序,作为supervisord的子进程。执行程序supervisord即‘守护进程’(Daemon)[在希腊神话中是守护神的意思!类似中国的护法?daemon这个词和恶魔(demon)只差一个字母,且发音完全一样!多的a这个品质可理解为全神关注的(absorbed)/精确的(accurate)/能干的(able)/乐于助人的(accommodating)/友好的(amicable)]。类似httpd, mysqld最后的d字母意为守护程序。


安装

easy_install supervisor
or
pip3 install supervisor
or
sudo apt install supervisor

配置

执行命令echo_supervisord_conf回显默认的初始配置文件。
可通过管道命令将配置文件重定向到某个目录,eg:echo_supervisord_conf > /etc/supervisord.conf
以root用户运行需要增加 user=root

启动 supervisor

supervisord -c supervisor.conf

supervisorctl

  • 当配置文件更新后, 可用supervisorctl update更新配置, 但并未立即生效,需重启.
  • 一般使用supervisorctl reload更新配置并重启所有程序.
  • 停止所有程序 supervisorctl stop all
  • 启动/停止/重启某程序 supervisorctl {start:stop:restart} program_name
  • 查看所有子进程的状态supervisorctl
启用web监控服务

通过浏览器远程管理,启动停止程序,查看日志等,非常方便。

[inet_http_server]         ; inet (TCP) server disabled by default
port=0.0.0.0:9001        ; (ip_address:port specifier, *:port for all iface)
username=user              ; (default is no username (open server))
password=123               ; (default is no password (open server))

sudo service supervisor restart http server控制面板生效
http://127.0.0.1:9001/
在这里插入图片描述

配置Redis开机自启服务
sudo supervisorctl
whereis supervisor
sudo vim /etc/supervisord.conf
[program:RedisServer]
command=/opt/redis/src/redis-server /opt/redis/redis.conf
autostart=true
autorestart=true
startsecs=0
user=root
stdout_logfile=/var/log/redis/stdout.log
stderr_logfile=/var/log/redis/stderr.log
mkdir /var/log/redis # 首先创建日志目录
sudo supervisorctl update # 更新 supervisord.conf 后生效

在这里插入图片描述

配置简单的http服务

例如要在vps上启用一个简单的http服务,用于分享download目录下的文件
日志目录需要手动创建mkdir /var/log/

[program:http-server]
command=python3 -m http.server
directory=/home/download/
redirect_stderr = true
user=root
autostart=true
autorestart=true
stderr_logfile=/var/log/simple-http-server_err.log
stdout_logfile=/var/log/simple-http-server_out.log
配置服务的环境变量

如果程序需要环境变量,那么需要手动添加environment
首先使用env 查看所有的环境变量,然后拼接所需的变量,通过:,间隔,示例:

[program:xxx-server]
;...
environment=PYTHONPATH=/home/xxx/xxxx:/home/xxx/ooo,PATH=/home/xxx/lib
;...

子进程状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AMP8Qf8O-1613829904942)(supervisor-subprocess-transitions.png)]
七种状态

  • STOPPED
  • STARTING
  • RUNNING
  • BACKOFF
  • STOPPING
  • EXITED

第八种UNKNOWN(由supervisord出错引起)
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用Linux Supervisor,你可以按照以下步骤进行配置和操作: 1. 安装Supervisor使用适合你Linux发行版的软件包管理器(如apt、yum等)安装Supervisor。例如,在Ubuntu上,可以使用以下命令进行安装: ```shell sudo apt-get install supervisor ``` 2. 配置SupervisorSupervisor的配置文件位于`/etc/supervisor/conf.d/`目录下。你可以在该目录中创建一个以`.conf`为后缀的配置文件来配置你想要监控进程。例如,创建一个名为`myapp.conf`的配置文件: ```shell sudo nano /etc/supervisor/conf.d/myapp.conf ``` 在配置文件中,你需要指定进程的命令、运行参数、工作目录等信息。以下是一个示例配置文件的内容: ``` [program:myapp] command=/path/to/myapp directory=/path/to/myapp/directory autostart=true autorestart=true user=myuser ``` 3. 更新配置:保存并关闭配置文件后,使用以下命令更新Supervisor的配置: ```shell sudo supervisorctl reread sudo supervisorctl update ``` 4. 操作进程使用`supervisorctl`命令来管理监控进程。例如,启动进程: ```shell sudo supervisorctl start myapp ``` 停止进程: ```shell sudo supervisorctl stop myapp ``` 重启进程: ```shell sudo supervisorctl restart myapp ``` 查看进程状态: ```shell sudo supervisorctl status ``` 这些是基本的Supervisor使用步骤。你可以根据自己的需求进行进一步的配置和操作,例如设置日志、限制进程资源等。请确保在使用Supervisor之前,你已经了解和熟悉相关的配置选项和命令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Spaceack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值