一、supervisor简介
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。
二:安装
1.安装
yum install epel-release -y
yum install -y supervisor
2.开机启动
systemctl enable supervisord # 开机自启动
systemctl start supervisord # 启动supervisord服务
3.当前存在的目录
4.说明
进程管理配置参数,不建议全都写在supervisord.conf文件中,可以将每个进程写一个配置文件放在include指定的目录下引入进supervisord.conf文件中。
/etc/supervisor.d目录,用于存放进程管理的配置文件。(此处目录可自定义,与配置文件中对应即可)
5.配置
修改 /etc/supervisord.conf 中的include参数,将 /etc/supervisor.d 目录添加到 include 中(目前,进入发现已经配置好了)
说明:*.ini 是可以指定一个或多个以.ini结束的配置文件。
6.创建目录
[root@localhost ~]# mkdir /opt/software/service
[root@localhost ~]# mkdir /opt/software/service/logs
将jar包上传到service目录下
写子进程的配置文件:
vim /etc/supervisord.d/resend.ini
详细配置:
[program:restsend]
environment=JAVA_HOME=/opt/software/jdk1.8.0_341
directory=/opt/software/service
command=/opt/software/jdk1.8.0_341/bin/java -Xms512m -Xmx1024m -Dspring.profiles.active=prd -Dserver.port=8099 -jar /opt/software/service/restsend.jar
autostart=true
startsecs=10
autorestart=true
startretries=3
user=root
priority=999
redirect_stderr=true
stdout_logfile_maxbytes=20MB
stdout_logfile_backups = 20
stdout_logfile=/opt/software/service/logs/log.log
stopasgroup=false
killasgroup=false
添加权限:
chmod 755 /etc/supervisord.d/resend.ini
重启服务
systemctl restart supervisord.service
7.观察效果
三:常见命令
1.常用命令
1、启动指定服务 [root@localhost ~]# supervisorctl start restsend 2、停止指定服务 [root@localhost ~]# supervisorctl stop restsend 3、重启指定服务 [root@localhost ~]# supervisorctl restart restsend 4、启动 supervisor 服务 [root@localhost ~]# systemctl start restsend 5、停止 supervisor 服务 [root@localhost ~]# systemctl stop supervisord 6、查看 supervisor 服务运行状态 [root@localhost ~]# systemctl status supervisord 7、supervisor 重新加载配置信息 [root@localhost ~]# systemctl reload supervisord
8、supervisor 服务 重启 [root@localhost ~]# systemctl restart supervisord
2.查看运行jar
supervisorctl status //查看所有进程的状态
3.注意事项
使用supervisor进程管理命令之前先启动supervisord,否则程序报错。