安全运维 | Supervisor进程管理工具

一颗小胡椒2021-09-03 10:39:50

Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

优点:

- 可以将非后台运行程序后台运行

- 自动监控,重启进程

缺点:

- 不能管理后台运行程序

- 对多进程服务,不能使用kill关闭

1. Supervisor 安装方式

联网环境下安装:

pip install supervisor

不能出网环境的安装:

https://pypi.org/project/supervisor/ python setup.py install

命令行输入以下指令查看安装已完成

supervisord --version

2. Supervisor 使用方式

supervisor安装完成后会生成三个执行程序:supervisortd、supervisorctl、echo_supervisord_conf,分别是supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于和守护进程通信,发送管理进程的指令)、生成初始配置文件程序。

安装完成以后,首先要生成原始的配置文件

echo_supervisord_conf 或 echo_supervisord_conf  >  /etc/supervisord.conf

启动supervisor

supervisord -c /etc/supervisord/supervisord.confsupervisorctl -c /etc/supervisord/supervisord.conf

注意事项:

当遇到报错时:unix:///tmp/supervisor.sock no such file

1. 打开配置文件

nano /etc/supervisord.conf

2. 修改后如下内容:

unix_http_server结点 [unix_http_server] ;file=/tmp/supervisor.sock ; (the path to the socket file) file=/var/run/supervisor.sock ; 
supervisord结点 [supervisord] ;logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log) logfile=/var/log/supervisord.log ; 
supervisorctl结点 [supervisorctl] ;serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket serverurl=unix:///var/run/supervisor.sock ;

3. 修改权限

sudo chmod 777 /run sudo chmod 777 /var/log

4.创建supervisor.sock

sudo touch /var/run/supervisor.sock sudo chmod 777 /var/run/supervisor.sock

5.启动supervisord,注意stop之前的实例或杀死进程

supervisordsupervisorctl status supervisorctl stop tomcat supervisorctl start tomcat supervisorctl restart tomcat supervisorctl reread supervisorctl update

3.配置管理进程

进程管理配置参数,不建议全都写在supervisord.conf文件中,应该每个进程写一个配置文件放在include指定的目录下包含进supervisord.conf文件中。  

[include] files = /etc/supervisor/config.d/tomcat.ini
1> 创建/etc/supervisor/config.d目录,用于存放进程管理的配置文件 2>修改/etc/supervisor/supervisord.conf中的include参数,将/etc/supervisor/conf.d目录添加到include中

下面是配置Tomcat进程的一个例子:

[program:tomcat] command=/opt/apache-tomcat-8.0.35/bin/catalina.sh  run stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out autostart=true autorestart=true startsecs=5 priority=1 stopasgroup=true killasgroup=true

配置文件说明(分号(;)开头的配置表示注释)

[unix_http_server] file=/tmp/supervisor.sock   ;UNIX socket 文件,supervisorctl 会使用 ;chmod=0700                 ;socket文件的mode,默认是0700 ;chown=nobody:nogroup       ;socket文件的owner,格式:uid:gid 
;[inet_http_server]         ;HTTP服务器,提供web管理界面 ;port=127.0.0.1:9001     ;Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性 ;username=user              ;登录管理后台的用户名 ;password=123               ;登录管理后台的密码 
[supervisord] logfile=/tmp/supervisord.log ;日志文件,默认是 $CWD/supervisord. loglogfile_maxbytes=50MB    ;日志文件大小,超出会rotate,默认 50MB,如果设成0,表示不限制大小 logfile_backups=10           ;日志文件保留备份数量默认10,设为0表示不备份 loglevel=info           ;日志级别,默认info,其它: debug,warn,trace pidfile=/tmp/supervisord.pid ;pid 文件 nodaemon=false               ;是否在前台启动,默认是false,即以 daemon 的方式启动 minfds=1024                  ;可以打开的文件描述符的最小值,默认 1024 minprocs=200                 ;可以打开的进程数的最小值,默认 200 
[supervisorctl] serverurl=unix:///tmp/supervisor.sock  ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致; serverurl=http://127.0.0.1:9001 ; 通过HTTP的方式连接supervisord ; 
[program:xx]是被管理的进程配置参数,xx是进程的名称[program:xx] command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run  ; 程序启动命令 autostart=true       ; 在supervisord启动的时候也自动启动 startsecs=10         ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒 autorestart=true     ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启 startretries=3       ; 启动失败自动重试次数,默认是3 user=tomcat          ; 用哪个用户启动进程,默认是root priority=999         ; 进程启动优先级,默认999,值小的优先启动 redirect_stderr=true ; 把stderr重定向到stdout,默认false stdout_logfile_maxbytes=20MB  ; stdout 日志文件大小,默认50MB stdout_logfile_backups = 20   ; stdout 日志文件备份数,默认是10; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out stopasgroup=false     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程killasgroup=false     ;默认为false,向进程组发送kill信号,包括子进程 ;包含其它配置文件 
[include] files = relative/directory/*.ini    ;可以指定一个或多个以.ini结束的配置文件
supervisord -c /etc/supervisord/supervisord.conf supervisorctl -c /etc/supervisord/supervisord.conf

可以通过命令行直接查看状态:

supervisorctl -c /etc/supervisord/supervisord.conf status
进程管理supervisord
本作品采用《CC 协议》,转载必须注明作者和本文链接
Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多
能运行的环境包括I/O,权限控制,系统调用,进程管理,内存管理等多项功能都可以归结到上边两点中。需要注意的是,kernel 的crash 通常会引起重启。注意大多数的现代操作系统只使用了 Ring 0 和 Ring 3。
CPU利用率显示的是程序在运行期间实时占用的CPU百分比。相比而言,系统态CPU使用率是指应用执行操作系统调用的时间占总CPU时间的百分比。系统态的CPU使用率高意味着共享资源有竞争或者I/O设备之间有大量的交互。而CPU负载显示的是一段时间内正在使用和等待使用CPU的平均任务数。简单理解,一个是CPU的实时使用情况,一个是CPU的当前以及未来一段时间的使用情况。
对 Black Kingdom 分析表明,它存在一些bug和关键性的加密缺陷,由于使用了硬编码密钥,受害者可利用其解密文件。
电力工控系统是关系到电网安全稳定运行的重要领域。目前国网黑龙江电力有限公司已经建立起“安全分区、网络专用、横向隔离、纵向认证”的边界安全防护体系。但在工控系统核心位置保护方面,还需考虑以下两个问题:电力工控系统具有闭源特性,内部函数逻辑调用非开源;攻击数据样本极少,难以构建特征库引擎。针对以上问题,从系统底层数据提取、运行状态学习等方面开展研究,设计了涵盖厂站、主站两侧的安全防御体系架构,为闭源电
1Docker 迁移存储目录默认情况系统会将 Docker 容器存放在 /var/lib/docker 目录下[问题起因]?今天通过监控系统,发现公司其中一台服务器的磁盘快慢,随即上去看了下,发现?由上述原因,我们都知道,在?中存储的都是相关于容器的存储,所以也不能随便的将其删除掉。设备进行扩容来达到相同的目的。的详细参数,请点击查看?但是需要注意的一点就是,尽量不要用软链, 因为一些?容器编排系统不支持这样做,比如我们所熟知的?发现容器启动不了了
F-vuln(全称:Find-Vulnerability)是为了自己工作方便专门编写的一款自动化工具,主要适用于日常安全服务、渗透测试人员和RedTeam红队人员,它集合的功能包括:存活IP探测、开放端口探测、web服务探测、web漏洞扫描、smb爆破、ssh爆破、ftp爆破、mssql爆破等其他数据库爆破工作以及大量web漏洞检测模块。
为了统一业界对关键术语和定义的认识和理解,规范术语和定义的使用,在工业和信息化部的指导下,工业互联网产业联盟对工业互联网术语和定义进行了汇总、梳理、研究、讨论,在此基础上,编制形成了《工业互联网术语和定义(1.0版本)》。
目前,OT 部分主要用于控制和分析企业生产过程,促进进一步改善生产;IT 部分重点处理企业各类数据和信息,并维护企业所制造产品的质量。因 IT 和 OT 各自用到的网络通信协议或网络架构的安全性存在差异性,IT 和 OT 网络互联后,安全风险将互相渗透,加大了网络风险暴露面。
美国作为世界上最早成体系推动网络空间能力建设的国家,其网络空间软硬件、信息技术服务等均处于全球供应链顶端,网络空间研发能力、试验测试能力和管理能力的“起点”较高,美国网络空间国防工业能力也相应处于世界领先位置。因此,有必要重点研究美国网络空间国防工业发展特点,从网络空间研发能力、试验测试能力和管理能力等角度分析美国网络空间国防工业基础能力水平,并总结美国推进网络空间国防工业基础能力发展的主要经验。
一颗小胡椒
暂无描述