linux进程监控工具supervisor

日常的项目需要,经常需要写shell脚本

然后nohup放入后台执行

为了防止进程挂掉还需要写一个进程监测脚本,为了让进程挂掉后能够重新启动,虽然很简单,但是有点繁琐,如果有多个类似的进程,则相当的不便

有没有比较科学的方法呢?比如能够统一的管理类似进程

我们可以通过进程监控工具`supervisor`来做到

什么是supervisor

>superviosr是一个Linux/Unix系统上的进程监控工具,supervisor是一个Python开发的通用的进程管理程序,可以管理和监控Linux上面的进程,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启

supervisor管理进程的原理是什么?

>通过fork/exec的方式把这些被管理的进程,当作supervisor的子进程来启动。这样的话,我们只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去就OK了。第二,被管理进程作为supervisor的子进程,当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,所以当然也就可以对挂掉的子进程进行自动重启,当然重启还是不重启,也要看你的配置文件里面有木有设置autostart=true了。

优点

`统一管理`

包括

```
supervisord
主进程,负责管理进程的server,它会根据配置文件创建指定数量的应用程序的子进程,管理子进程的整个生命周期,对crash的进程重启,对进程变化发送事件通知等。同时内置web server和XML-RPC Interface,轻松实现进程管理。。该服务的配置文件在/etc/supervisor/supervisord.conf。

supervisorctl
客户端的命令行工具,提供一个类似shell的操作接口,通过它你可以连接到不同的supervisord进程上来管理它们各自的子程序,命令通过UNIX socket或者TCP来和服务通讯。用户通过命令行发送消息给supervisord,可以查看进程状态,加载配置文件,启停进程,查看进程标准输出和错误输出,远程操作等。服务端也可以要求客户端提供身份验证之后才能进行操作。
```

下面我们在宝塔面板中来安装

![](https://www.yuanchengzhushou.cn/static/image/supervisor_1.png)

安装完成后

![](https://www.yuanchengzhushou.cn/static/image/supervisor_2.png)

我们在/home/www中创建while.sh

内容如下

```
#!/bin/bash
while (( 1 ))
do
echo $(date +"%Y-%m-%d %H:%M:%S")
sleep 1800
done
```

执行`ps -aux|grep while.sh`,发现脚本已经启动

这个时候我们kill掉这个进程,会发现进程再次被重新启动

    A+
发布日期:2021年04月24日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: