linux的守護進程類似於windows的服務。linux通過supervisor創建守護進程。https://blog.csdn.net/u014115673/article/details/54601800
1、安裝supervisor
sudo apt-get install supervisor -- ubuntu
yum install -y supervisor -- centos
安裝成功后,supervisor就會默認啟動,也會隨系統啟動。
CentOS安裝完成之后,默認不啟動,可以使用腳本啟動:
/usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
2、有很多添加守護進程的方法,下面介紹一種最好用的一種,將每個進程的配置文件單獨拆分,放在/etc/supervisor/conf.d/目錄下,以.conf作為擴展名。
[program:OC] command=dotnet /home/Documents/OC/OC.Service.dll #被監控的進程啟動命令 /home/Documents/Lottery.OC 可以省略不寫 numprocs=1 #啟動進程的數量
startsecs=1 directory=/home/Documents/OC/ #腳本所在的目錄 autostart=true #是否隨supervisor啟動 默認為true autorestart=true #是否自動重啟 三個選項false、unexpected、true,若為false,無論什么情況下都不自動重啟;若為unexpected,只有進程退出碼不在exitcodes里面時才重啟 startretries=10 #啟動失敗后的重試次數 exitcodes=0 #正常退出代碼 stopsignal=KILL #用來殺死進程的信號 stopwaitsecs=10 #發送stopsigal前的等待時間 redirect_stderr=true #重定向stderr到stdout stdout_logfile=logfile #指定日志文件
user=wangwust #腳本以什么用戶身份運行
這樣子就創建好了守護進程:OC
3、web操作界面創建
在supervisor的配置文件supervisord.conf中添加一下代碼
[inet_http_server] port=0.0.0.0:9001 username=user password=123
4、supervisor常用命令
supervisorctl version #查看supervisor版本
supervisorctl start OC #啟動進程OC
supervisorctl stop OC #停止進程OC
supervisorctl start all #啟動所有進程
supervisorctl stop all #停止所有進程
supervisorctl status #查看所有進程狀態
supervisorctl reload #載入最新的配置文件,停止原有進程並按新的配置啟動、管理所有進程。
supervisorctl update #根據最新的配置文件,啟動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啟。
5、supervisor啟動和停止的日志文件存放在/var/log/supervisor/supervisord.log
注意:顯式用stop停止掉的進程,用reload或者update都不會自動重啟。