extremely simple Example of how to use supervisor
之前介绍了如何使用frp进行内网穿透,以及如何在vps上部署自己的动态网页应用等文章,其中都涉及到了如何让自己写的程序能自己在后台不断运行,挂掉之后能自动重启这样的问题,这个问题可以借助supervisor解决。
这篇文章用一个极简的例子——一个不断计数的简单Python程序来解释supervisor最基本的用法。
下载安装
Ubuntu系统下
sudo apt-get install supervisor
准备一个需要supervisor管理的简单程序
1 | import time |
这个程序唯一的作用就是每隔一秒打印一句话,其中用flush=True就能让这句话输出到log里,这里如果直接自己运行可以在终端看到这样的输出:
➜ ~ python3 testS.py
test time elapsed: 1
test time elapsed: 2
test time elapsed: 3
test time elapsed: 4
test time elapsed: 5
test time elapsed: 6
配置supervisor
需要编写一个配置文件,说明要管理哪个程序, 该配置文件的位置如下。
sudo vim /etc/supervisor/conf.d/testS.conf
1 | [program:testS] # 起的名字,后面要用 |
启动supervisor
可以选择进入sudo模式,也可以直接用sudo运行管理supervisor的命令。
supervisorctl reread
supervisorctl update
之后这个简单的Python计数程序就自动开始在后台运行了,输出日志会持续不断的写在/var/log/testS.out.log里。
root@tom:/home/tom1# cat /var/log/testS.out.log
test time elapsed: 1
test time elapsed: 2
test time elapsed: 3
test time elapsed: 4
test time elapsed: 5
test time elapsed: 6
……
通过直接使用supervisorctl,可以直接查看到当前supervisor管理的程序
root@tom1:/home/tom1# supervisorctl
testS STOPPED Feb 01 10:16 AM
supervisor>
root@tom1:/home/tom1# supervisorctl start testS
testS: started
root@tom1:/home/tom1# supervisorctl
testS RUNNING pid 23992, uptime 0:00:07
supervisor>
root@tom1:/home/tom1# supervisorctl stop testS
testS: stopped
如果想停止,重启,启动配置文件里的程序,可以使用相关命令
supervisorctl stop [名字]
supervisorctl start [名字]
supervisorctl restart [名字]