1. Supervisor介绍
在linux或者unix操作系统中,守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。由于在linux中,每个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端被称为这些进程的控制终端,当控制终端被关闭的时候,相应的进程都会自动关闭。但是守护进程却能突破这种限制,它脱离于终端并且在后台运行,并且它脱离终端的目的是为了避免进程在运行的过程中的信息在任何终端中显示并且进程也不会被任何终端所产生的终端信息所打断。它从被执行的时候开始运转,直到整个系统关闭才退出。
使用它的原因有两点:
- 微软官方文档推荐的,降低学习成本
- 不一定最好,但文档全
2. 在CentOS7上安装Supervisor
#执行epel-release epel-release会配置Supervisor的源 yum -y install epel-release #安装Supervisor yum -y install supervisor #通过配置文件来启动supervisor supervisord -c /etc/supervisord.conf #查看supervisor 版本 supervisord version
3. 创建项目的Supervisor配置文件
#进入supervisord.d目录 cd /etc/supervisord.d touch gost.ini #查看和编辑gost.ini配置文件 vi gost.ini #进入文件后,按“i”或者“a”进入插入模式,插入下面的配置信息 #程序名称 [program:gost] #程序所在目录 directory=/home/centos #执行指令 command=/home/centos/gost -L socks5://user:passwd@:1080?udp=true #执行进程身份 user=root #是否自启动 autostart=true #自动启动 Supervisor启动后就拉起来 autorestart=true #自动重启时间间隔(s) startsecs=10 #错误日志保存位置 stderr_logfile=/Projects/gost/Error.log #日志保存位置 stdout_logfile=/Projects/gost/Out.log
4.配置Supervisor开机自启
#进入system目录 cd /usr/lib/systemd/system #编辑supervisord.service文件 vi supervisord.service
修改后内容
[Unit] Description=Process Monitoring and Control Daemon After=rc-local.service nss-user-lookup.target [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf ExecStop=/usr/bin/supervisorctl shutdown ExecReload=/usr/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=42 [Install] WantedBy=multi-user.target
保存退出,然后执行命令,查看是否启动成功
#启动服务 systemctl enable supervisord #验证一下是否为开机启动 systemctl is-enabled supervisord
可以重启CentOS 然后直接访问接口测试是否开机自正常
5. Supervisor常用指令
# 启动所有 supervisorctl start all # 重启所有 supervisorctl restart all # 停止所有 supervisorctl stop all #PS:要操作某个服务,把all换成服务名即可 #查看服务状态 supervisorctl status #重新加载配置文件 supervisorctl reload
ps -ef|grep gost