Linux 將常用軟件注冊為服務,開機自啟

  • 可以使用"service 服務名稱"來進行管理,比如常常使用的命令”service httpd start”,就是httpd注冊成為一個服務了,于是才不需要寫一大串的原始服務路徑。像nginx的啟動手工方式為:”/usr/tengine-version/sbin/nginx -c /usr/tengine-version/conf/nginx.conf”,將nginx注冊成為系統服務后,就可以像"service nginx start"來啟動。
  • 如何增加一個服務:
    • 服務腳本必須存放在/etc/ini.d/目錄下;
    • chkconfig --add servicename在chkconfig工具服務列表中增加此服務,此時服務會被在/etc/rc.d/rcN.d中賦予K/S入口了;
    • chkconfig --level 35 mysqld on修改服務的默認啟動等級。
  • 要把一個程序注冊成系統服務,首先得給出一個供service命令調用的腳本文件放到目錄"/etc/init.d/"中去。
  • 寫腳本之前,先看下軟件的幫助文檔:
    [root@localhost sbin]# ./nginx -h
    Tengine version: Tengine/2.2.1 (nginx/1.8.1)
    Usage: nginx [-?hvmVtdq] [-s signal] [-c filename] [-p prefix] [-g directives]
    
    Options:
      -?,-h         : this help
      -v            : show version and exit
      -m            : show all modules and exit
      -l            : show all directives and exit
      -V            : show version, modules and configure options then exit
      -t            : test configuration and exit
      -d            : dump configuration and exit
      -q            : suppress non-error messages during configuration testing
      -s signal     : send signal to a master process: stop, quit, reopen, reload
      -p prefix     : set prefix path (default: /usr/tengine/)
      -c filename   : set configuration file (default: conf/nginx.conf)
      -g directives : set global directives out of configuration file
    # 由此可知 設置配置文件為-c 文件名,停止為-s stop
    
  • 腳本文件(注意case語句的格式,格式錯誤是啟動不起來的,如果啟動不成功,執(zhí)行cat /var/log/messages|grep nginx查看啟動日志)
#! /bin/bash
#chkconfig: 2345 20 80
#description: nginx  service
#processname:nginx
ROOT_PATH=/usr/tengine
case "$1" in
  start)
  echo "Starging nginx Server..."
  $ROOT_PATH/sbin/nginx  -c $ROOT_PATH/conf/nginx.conf
  ;;
  stop)
  echo "Stopping nginx Server..."
  $ROOT_PATH/sbin/nginx -s stop
  ;;
  restart)
  echo "Restart nginx Server..."
  $ROOT_PATH/nginx -s stop
  $ROOT_PATH/sbin/nginx  -c $ROOT_PATH/conf/nginx.conf
  ;;
  *)
  echo "Usage: $0 {start|stop|restart}"
  exit 1
  ;;
esac
exit 0
  • chmod +x nginx只授予這個文件的所屬者執(zhí)行的權限
  • 腳本文件chkconfig解釋
    #chkconfig: 2345 20 80
    #2345表示系統運行級別是2,3,4或者5時都啟動此服務,
    #20,是啟動的優(yōu)先級,
    #80是關閉的優(yōu)先級,如果啟動優(yōu)先級配置的數太小時如0時,則有可能啟動不成功,
    #因為此時可能其依賴的網絡服務還沒有啟動,從而導致自啟動失敗。
    chkconfig --list #列出所有的系統服務。
    chkconfig --add httpd #增加httpd服務。
    chkconfig --del httpd #刪除httpd服務。 
    chkconfig --level httpd 2345 on #設置httpd在運行級別為2、3、4、5的情況下都是on(開啟)的狀態(tài)。
    chkconfig --list #列出系統所有的服務啟動情況。 chkconfig --list mysqld #列出mysqld服務設置情況。 
    chkconfig --level 35 mysqld on #設定mysqld在等級3和5為開機運行服務,--level 35表示操作只在等級3和5執(zhí)行,on表示啟動,off表示關閉。 chkconfig mysqld on #設定mysqld在各等級為on,“各等級”包括2、3、4、5等級。
    如果需要自啟動某些服務,只需使用chkconfig 服務名 on即可,若想關閉,將on改為off
    在默認情況下,chkconfig會自啟動2345這四個級別,如果想自定義可以加上--level選項
    
  • chkconfig nginx on,chkconfig --add nginx添加到自啟列表
  • reboot就能看到nginx開機自啟了
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容