• <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)論
              

            狠狠色丁香婷婷综合久久来| 亚洲狠狠久久综合一区77777| 狠狠色婷婷久久一区二区| 欧洲性大片xxxxx久久久| 久久影视国产亚洲| 久久久久一本毛久久久| 亚洲精品NV久久久久久久久久| 久久久久成人精品无码中文字幕| 国产巨作麻豆欧美亚洲综合久久| 99久久国产宗和精品1上映 | 久久久久久久综合日本亚洲| 久久精品国产一区二区三区| 97久久精品午夜一区二区| 久久国产劲爆AV内射—百度| 亚洲人成无码网站久久99热国产| 久久人人妻人人爽人人爽| 人妻少妇精品久久| 狠狠色丁香婷婷久久综合不卡| 香蕉久久影院| 成人亚洲欧美久久久久| 久久99精品久久久久久久久久| 久久中文字幕人妻熟av女| 日韩亚洲国产综合久久久| 久久精品中文字幕久久| 久久99国产精一区二区三区| 亚洲伊人久久大香线蕉综合图片| 综合久久给合久久狠狠狠97色| 超级碰久久免费公开视频| 99精品国产在热久久| 色诱久久久久综合网ywww| 精品久久久久久中文字幕人妻最新| 婷婷久久综合九色综合九七| 999久久久免费国产精品播放| 国产成人精品久久免费动漫| 久久精品国产亚洲AV麻豆网站| 日日噜噜夜夜狠狠久久丁香五月 | 久久久一本精品99久久精品88| 久久久亚洲欧洲日产国码是AV| 久久综合视频网| 国产精品禁18久久久夂久| 亚洲乱码精品久久久久..|