Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.
Supervisor是一款Linux下的进程管理软件。最主要的两个功能是:
- 将非daemon程序变成deamon方式运行
- 对程序进行监控,当程序退出时,可以自动拉起程序
supervisor的官网:Supervisor。supervisor管理进程,就是通过fork/exec的方式把这些被管理的进程,当作supervisor的子进程来启动。如果要深入原理,可以查看这篇linux下python守护进程编写和原理理解
python编写守护进程(daemon)
- fork子进程,而后父进程退出,此时子进程会被init进程接管。
- 修改子进程的工作目录、创建新进程组和新会话、修改umask。
- 子进程再次fork一个进程,这个进程可以称为孙子进程,而后子进程退出。
- 重定向孙子进程的标准输入流、标准输出流、标准错误流到/dev/null。
|
|
supervisor配置
|
|
维护命令
supervisor可通过维护命令supervisorctl管理或者通过web管理界面,supervisorctl又分为命令式和交互式
|
|
多进程运行12345678[program:TornadoBlog]command=python /opt/data/product/blog/run.py --port=80%(process_num)02dprocess_name=80%(process_num)02dstdout_logfile=/opt/data/product/blog/log/tornado-80%(process_num)02d.lognumprocs=2numprocs_start=0autorestart=trueredirect_stderr=true
参考资料
Linux 守护进程的启动方法
supervisord website