• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            戰(zhàn)魂小筑

            討論群:309800774 知乎關(guān)注:http://zhihu.com/people/sunicdavy 開(kāi)源項(xiàng)目:https://github.com/davyxu

               :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              257 隨筆 :: 0 文章 :: 506 評(píng)論 :: 0 Trackbacks

            1.1 為進(jìn)程添加守護(hù)進(jìn)程

            參考鏈接http://yubosun.akcms.com/tech/linux-daemon-program.htm

               1:  #include <unistd.h> 
               2:  #include <signal.h> 
               3:  #include <sys/types.h> 
               4:  #include <sys/stat.h> 
               5:  #include <stdio.h> 
               6:  #include <stdlib.h>
               7:   
               8:  #ifndef NOFILE 
               9:  #define NOFILE 3 
              10:  #endif
              11:   
              12:  void init_daemon() 
              13:  { 
              14:          int pid; 
              15:          int i; 
              16:          if(pid = fork()) exit(0); //父進(jìn)程,退出 
              17:   
              18:          else if(pid < 0) exit(1); //fork失敗 
              19:   
              20:          /* 子進(jìn)程繼續(xù)執(zhí)行 */ 
              21:          setsid(); //創(chuàng)建新的會(huì)話組,子進(jìn)程成為組長(zhǎng),并與控制終端分離 
              22:   
              23:          /* 防止子進(jìn)程(組長(zhǎng))獲取控制終端 */ 
              24:          if(pid = fork()) exit(0); //父進(jìn)程,退出 
              25:   
              26:          else if(pid < 0) exit(1); //fork錯(cuò)誤,退出 
              27:   
              28:          /* 第二子進(jìn)程繼續(xù)執(zhí)行 , 第二子進(jìn)程不再是會(huì)會(huì)話組組長(zhǎng)*/ 
              29:   
              30:          //for(i = 0; i < NOFILE; i++) /* 關(guān)閉打開(kāi)的文件描述符*/ 
              31:          //{ 
              32:          //close(i); 
              33:          //} 
              34:          chdir("/tmp"); /* 切換工作目錄 */ 
              35:          umask(0); /* 重設(shè)文件創(chuàng)建掩碼 */ 
              36:          return; 
              37:  }
              38:   
              39:  int main(int argc, char* argv[])
              40:  {    
              41:      FILE *fp; 
              42:   
              43:      signal(SIGCHLD, SIG_IGN); /* 忽略子進(jìn)程結(jié)束信號(hào),防止出現(xiàn)僵尸進(jìn)程 */ 
              44:   
              45:      init_daemon(); 
              46:   
              47:      while(1) 
              48:      { 
              49:              sleep(1);
              50:              
              51:  // 注意, 日志寫(xiě)到這個(gè)目錄
              52:              if((fp = fopen("/var/tmp/test.log", "a")) != NULL) 
              53:              { 
              54:                      fprintf(fp, "%s\n", "test message"); 
              55:                      fclose(fp); 
              56:              } 
              57:      } 
              58:   
              59:      return 0;
              60:  }

            1.2 編寫(xiě)服務(wù)腳本

            參考鏈接http://blog.sina.com.cn/s/blog_57421ff80100c7nn.html

            紅色字是需要填寫(xiě)的部分, 文件頭部分可以選填

               1:  #!/bin/bash
               2:   
               3:  # chkconfig: 3 3 1
               4:   
               5:  # description: web kill center
               6:   
               7:  EXEC_PATH=/usr/local/bin
               8:   
               9:  EXEC=CenterServiced
              10:   
              11:  PID_FILE=/var/run/CenterServiced.pid
              12:   
              13:  DAEMON=/usr/local/bin/CenterServiced
              14:   
              15:  if ! [ -x $EXEC_PATH/$EXEC ] ; then
              16:   
              17:  echo "ERROR: $EXEC_PATH/$EXEC not found"
              18:   
              19:  exit 1
              20:   
              21:  fi
              22:   
              23:  stop()
              24:   
              25:  {
              26:   
              27:  echo "Stoping $EXEC ..."
              28:   
              29:  killall $DAEMON >/dev/null
              30:   
              31:  echo "Shutting down $EXEC: [ OK ]"
              32:   
              33:  }
              34:   
              35:  start()
              36:   
              37:  {
              38:   
              39:  echo "Starting $EXEC ..."
              40:   
              41:  $DAEMON > /dev/null &
              42:   
              43:  echo "Starting $EXEC: [ OK ]"
              44:   
              45:  }
              46:   
              47:  restart()
              48:   
              49:  {
              50:   
              51:  stop
              52:   
              53:  start
              54:   
              55:  }
              56:   
              57:  case "$1" in
              58:   
              59:  start)
              60:   
              61:  start
              62:   
              63:  ;;
              64:   
              65:  stop)
              66:   
              67:  stop
              68:   
              69:  ;;
              70:   
              71:  restart)
              72:   
              73:  restart
              74:   
              75:  ;;
              76:   
              77:  status)
              78:   
              79:  status -p $PID_FILE $DAEMON
              80:   
              81:  ;;
              82:   
              83:  *)
              84:   
              85:  echo "Usage: service $EXEC {start|stop|restart|status}"
              86:   
              87:  exit 1
              88:   
              89:  esac
              90:   
              91:  exit $?
              92:   

            1.3 創(chuàng)建服務(wù)

            參考鏈接http://hi.baidu.com/guanxiansun/blog/item/b4c7dcf55f6011e47709d724.html

            將服務(wù)文件拷貝到/etc/init.d下,去掉擴(kuò)展名, 文件名即是服務(wù)名

            chmod +x ./wkcenter

            如果不設(shè)置啟動(dòng), 那么service中將無(wú)法找到該服務(wù)及操作

            1.4 設(shè)置啟動(dòng)順序

            創(chuàng)建啟動(dòng)鏈接

            ln /etc/init.d/wkcenter /etc/rc3.d/S03wkcenter

            創(chuàng)建關(guān)閉鏈接

            ln /etc/init.d/wkcenter /etc/rc0.d/K03wkcenter

            1.5 添加服務(wù)

            chkconfig --add wkcenter

            查看服務(wù)是否存在

            chkconfig –-list | grep wkcenter

            查看服務(wù)狀態(tài)

            chkconfig wkcenter on

            注意, 確認(rèn)wkcenter在2,3,4,5中任意或者部分開(kāi)啟, 必須為綠字. 灰字代表服務(wù)無(wú)法開(kāi)機(jī)啟動(dòng)或者其他問(wèn)題

            1.6 測(cè)試

            臨時(shí)開(kāi)啟命令測(cè)試

            service wkcenter start

            1.7 QA

            參考鏈接: http://blog.526net.com/?p=1706

            1. 服務(wù)切記不可放在用戶home目錄, 最好放在/usr/local/bin目錄, 日志寫(xiě)到var中, 否則服務(wù)測(cè)試正常,但是無(wú)法自動(dòng)啟動(dòng)

            2. Linux下, 父進(jìn)程啟動(dòng)的程序的生命期跟隨父進(jìn)程, 父進(jìn)程可以是終端, 父進(jìn)程一旦終止, 子進(jìn)程都必須結(jié)束. 因此守護(hù)進(jìn)程需要脫離父進(jìn)程,避免被父進(jìn)程生命期控制


            評(píng)論

            # re: Linux服務(wù)器守護(hù)進(jìn)程+自動(dòng)啟動(dòng)+服務(wù)配置筆記 2012-02-29 09:06 Alex-Lee
            太好了,正需要一個(gè)這個(gè)文章。一直沒(méi)有找全,今天終于發(fā)現(xiàn)了。  回復(fù)  更多評(píng)論
              

            # re: Linux服務(wù)器守護(hù)進(jìn)程+自動(dòng)啟動(dòng)+服務(wù)配置筆記 2012-02-29 09:11 tb
            不錯(cuò)的 文章  回復(fù)  更多評(píng)論
              

            # re: Linux服務(wù)器守護(hù)進(jìn)程+自動(dòng)啟動(dòng)+服務(wù)配置筆記 2012-02-29 22:59 我要去拯救世界
            linux進(jìn)程守護(hù)貌似有很多成熟的腳本,
            不過(guò)還是支持大牛了  回復(fù)  更多評(píng)論
              

            # re: Linux服務(wù)器守護(hù)進(jìn)程+自動(dòng)啟動(dòng)+服務(wù)配置筆記[未登錄](méi) 2015-03-03 17:31 aa
            感謝  回復(fù)  更多評(píng)論
              

            人妻精品久久久久中文字幕一冢本 | 亚洲国产精品久久电影欧美| 久久久久av无码免费网| 久久精品国产亚洲AV电影| 国产福利电影一区二区三区,免费久久久久久久精 | 欧美日韩精品久久久久| 国产精品免费福利久久| 久久久久国产| 91精品国产乱码久久久久久| 青春久久| 国产激情久久久久影院小草| 青青草原精品99久久精品66| 久久九九免费高清视频| 成人久久综合网| 久久综合亚洲色一区二区三区| 久久综合久久综合九色| 男女久久久国产一区二区三区 | 久久精品嫩草影院| 久久99精品久久久大学生| 久久精品成人一区二区三区| 国内精品久久久久| 精品久久久噜噜噜久久久| 久久人人爽人人爽人人片AV麻烦 | 亚洲一本综合久久| 国产成人久久精品区一区二区| 日本欧美久久久久免费播放网| 久久青青草原精品国产不卡| 精品视频久久久久| 国产亚洲美女精品久久久| 久久久国产精品网站| 2020久久精品国产免费| 久久精品亚洲精品国产色婷 | 久久国产精品成人影院| 久久久精品国产sm调教网站| 久久精品人人做人人妻人人玩| 色婷婷综合久久久久中文一区二区 | 亚洲成色www久久网站夜月| 一本一本久久aa综合精品| 久久亚洲私人国产精品vA| 久久久久久久人妻无码中文字幕爆 | 精品久久久久成人码免费动漫 |