Leo_zhou

练习时长八年半的运维工程师

Linux进程批量管理工具

在使用docker容器时,可以有单机的docker-compose批量编排工具,甚至还有集群的k8s之类编排工具,那么在Linux系统中同样也有相关的批量管理进程的工具,其中使用最多的应该就是supervisor。Supervisor是一个用Python写的进程管理工具,可以很方便的用来启动、重启、关闭进程。

supervisor主要由两部分组成:supervisord主要负责管理子进程,响应客户端命令以及日志的输出等;supervisorctl执行命令行客户端,用户可以通过它与不同的supervisord进程联系,获取子进程的状态等。

安装与配置
Centos7版本后已经集成了supervisor工具,可以直接通过yum命令安装,并设置开机启动服务

yum install -y supervisor
systemctl enable supervisord

默认的配置文件在/etc/supervisord.conf中,可以设置可视化的页面,也可以设置集中的管理配置文件路径:

;[inet_http_server]         ; inet (TCP) server disabled by default
;port=127.0.0.1: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))

[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris              ; should be same as http_username if set
;password=123                ; should be same as http_password if set
;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
;history_file=~/.sc_history  ; use readline history if available
[include]#此项是自定义配置文件路径
files = supervisord.d/*.ini

supervisor最为关键的就是自定义的进程管理文件,以下为示例:

[program:leo_zhou]#自定义进程名称
command = ping www.zhouzhifei.com#进程操作命令
directory = /data/program#命令执行路径
autorestart= true#是否异常后重启
autostart = true#是否随supervisor启动
startsecs = 5#启动延时执行
startretries = 3#启动尝试次数
user = root#进程用户
stopsignal = INT#停止信号,默认TERM;中断:INT(类似于Ctrl+C)(kill -INT pid),退出后会将写文件或日志(推荐);终止:TERM(kill -TERM pid);挂起:HUP(kill -HUP pid),注意与Ctrl+Z/kill -stop pid不同;从容停止:QUIT(kill -QUIT pid)

supervisorctl命令
supervisorctl stop(start, restart) xxx/all,停止(启动,重启)某一个进程(xxx)/全部;
supervisorctl reread: 只载入最新的配置文件, 并不重启任何进程;
supervisorctl reload: 载入最新的配置文件,停止原来的所有进程并按新的配置启动管理所有进程;
supervisorctl update: 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启;
《Linux进程批量管理工具》

supervisor的功能主要是可以自定义管理Linux进程,方便后期的维护,但如果使用了docker容器后,基本就告别进程的管理方式,而以docker容器管理为主导。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注