supervisor运行golang守护进程
Supervisor是一个C/S系统,它可以在类UNIX系统上控制系统进程,由python编写,它提供了大量的功能来实现对进程的管理。
支持的平台
安装supervisor
golang http服务先整一个简单的golang http服务 package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/",func(w http.ResponseWriter,r *http.Request) { fmt.Fprintf(w,"Hello world") }) err := http.ListenAndServe(":9090",nil) if err != nil { log.Fatal("ListenAndServe: ",err) } } 直接运行这个程序会占用住终端,下面看看如何用supervisor来跑这个程序。 supervisor配置golang编辑/etc/supervisord.conf,在最后增加运行程序设置 [program:golang-http-server] command=/home/golang/simple_http_server autostart=true autorestart=true startsecs=10 stdout_logfile=/var/log/simple_http_server.log stdout_logfile_maxbytes=1MB stdout_logfile_backups=10 stdout_capture_maxbytes=1MB stderr_logfile=/var/log/simple_http_server.log stderr_logfile_maxbytes=1MB stderr_logfile_backups=10 stderr_capture_maxbytes=1MB 几个配置说明:
其余配置说明可以查看官方文档。 启动supervisorsudo /usr/bin/supervisord -c /etc/supervisord.conf 如果出现什么问题,可以查看日志进行分析,日志文件路径/tmp/supervisord.log tips:如果修改了配置文件,可以用kill -HUP重新加载配置文件 $ cat /tmp/supervisord.pid | xargs sudo kill -HUP 查看supervisor运行状态 $ supervisorctl golang-http-server RUNNING pid 23307,uptime 0:02:55 supervisor> 输入help可以查看帮助 supervisor> help default commands (type help ): ===================================== add clear fg open quit remove restart start stop update avail exit maintail pid reload reread shutdown status tail version supervisor运行原理supervisor运行后本身是守护进程,通过自身来管理相应的子进程,通过观察相应的进程状态就很明了了。 $ ps -ef | grep supervisord root 23306 1 0 07:30 ? 00:00:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf root 23331 23222 0 07:41 pts/0 00:00:00 grep supervisord $ ps -ef | grep simple_http_server root 23307 23306 0 07:30 ? 00:00:00 /home/golang/simple_http_server root 23333 23222 0 07:41 pts/0 00:00:00 grep simple_http_server 可以很直观的看出golang simple_http_server进程是supervisord的子进程。 常用命令控制命令基本都通过supervisorctl执行,输入
让 Supervisor 开机启动echo "service supervisord start" >> /etc/rc.local supervisor是否靠谱supervisor的诞生已经10年了,现在是3+版本,所以放心使用吧。 参考supervisor官网:http://supervisord.org/ 开机启动:https://github.com/Supervisor/initscripts (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |