使用 supervisor 服務,將程序監控起來,若是程序掛掉了,能夠實現自啓動c++
編寫 c++ 程序 test.capp
#include <stdio.h> #include <string.h> int main(){ FILE *fp = fopen("./1.txt","a+"); if(fp==0){ printf("can't open file\n"); return 0; } int ix = 0; for(;;ix++){ fseek(fp,0,SEEK_END); char s_add_arr[10]; memset(s_add_arr,'\0',10); sprintf(s_add_arr,"%i\n",ix); fwrite(s_add_arr,strlen(s_add_arr),1,fp); sleep(1); } fclose(fp); return 0; }
啓動服務ssh
supervisord -c /etc/supervisord.conf測試
# 使用了默認的配置文件 在 /etc/ 下ui
要給須要自拉起的程序添加配置文件 默認放在 /etc/supervisor.d/ 目錄下,以 .conf 文件結尾spa
測試程序爲 test.confrest
[program:test] command=/home/jingchanglin/code/test/test autostart=true autorestart=true startsecs=10 priority=1 redirect_stderr=true stdout_logfile_maxbytes=50MB stdout_logfile_backups=10 stdout_logfile=/home/jingchanglin/code/test/app.log
服務啓動後,能夠使用 supervisorctl 命令來進入控制檯code
[root@localhost]# supervisorctl sshd RUNNING pid 28606, uptime 0:02:42 test RUNNING pid 28605, uptime 0:02:42 supervisor> help default commands (type help <topic>): ===================================== add exit open reload restart start tail avail fg pid remove shutdown status update clear maintail quit reread signal stop version supervisor>
進入以後,看到的是在監控的程序的名稱blog
使用 help 能夠看服務支持哪些自命令rem
通常經常使用的包括
reload
從新加載,這樣某個新添/刪除的服務就能夠看到了
shutdown 關閉某個程序
start 啓動某個程序