原文: https://www.jianshu.com/p/2e03255cfabbphp
ubuntu配置開機自動啓動服務linux
----------------------------------------------------------------nginx
這裏須要特別說明的是,Ubuntu系統下沒有RedHat系統下的chkconfig命令。
但Ubuntu有一個相似的命令: sysv-rc-conf
。express
經過apt-get命令完成sysv-rc-conf
軟件的安裝。ubuntu
背景
Linux系統的運行級別有7個,分別對應的:ruby
- 0: 關機
- 1: 單用戶(維護)
- 2~5: 多用戶
- 6: 重啓
能夠經過runlevel
命令來查看當前系統的運行等級:bash
wds@wds-VirtualBox:~$ runlevel N 2
其中第一個表示上一次的運行等級,N表示沒有上一次運行等級的記錄;第二個表示當前運行等級,這裏爲2.php-fpm
Linux中全部開機自啓動項目運行腳本都放在/etc/init.d/
目錄下;同時在/etc/
目錄下有rc?.d目錄,分別對應了7中不一樣的運行級別:oop
wds@wds-VirtualBox:/$ ls /etc/ | grep ^rc rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rc.local rcS.d
這裏rc2.d目錄就對應了咱們系統當前的運行等級。ui
其中裏面的一些文件其實都是/etc/init.d/
目錄下文件的軟連接:
wds@wds-VirtualBox:/etc/rc2.d$ ls -ltr total 4 -rw-r--r-- 1 root root 677 3月 13 2014 README lrwxrwxrwx 1 root root 18 12月 8 19:49 S99rc.local -> ../init.d/rc.local lrwxrwxrwx 1 root root 18 12月 8 19:49 S99ondemand -> ../init.d/ondemand lrwxrwxrwx 1 root root 18 12月 8 19:49 S70pppd-dns -> ../init.d/pppd-dns lrwxrwxrwx 1 root root 19 12月 8 19:49 S70dns-clean -> ../init.d/dns-clean lrwxrwxrwx 1 root root 15 12月 8 19:49 S50saned -> ../init.d/saned lrwxrwxrwx 1 root root 27 12月 8 19:49 S20speech-dispatcher -> ../init.d/speech-dispatcher lrwxrwxrwx 1 root root 15 12月 8 19:49 S20rsync -> ../init.d/rsync lrwxrwxrwx 1 root root 20 12月 8 19:49 S20kerneloops -> ../init.d/kerneloops lrwxrwxrwx 1 root root 21 12月 9 17:25 S99grub-common -> ../init.d/grub-common lrwxrwxrwx 1 root root 15 12月 9 17:45 S20nginx -> ../init.d/nginx lrwxrwxrwx 1 root root 17 12月 9 17:47 S20php-fpm -> ../init.d/php-fpm
整個開機自啓動項的流程以下:
- 開機後,系統得到當前的運行等級(例如這裏的等級爲2);
- 運行
/etc/rc?.d
目錄下的全部可執行文件(這裏運行/etc/rc2.d/
目錄下全部的軟連接。這些軟連接的源文件都保存在/etc/init.d/
目錄下)。
所以咱們只須要在/etc/init.d/完成啓動nginx
進程的腳本,而後在/etc/rc2.d/
作對應的軟連接便可。
配置nginx自啓動文件
#! /bin/sh # Author: rui ding # Modified: Geoffrey Grosenbach http://www.linuxidc.com # Modified: Clement NEDELCU # Reproduced with express authorization from its contributors set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="nginx daemon" NAME=nginx DAEMON=/usr/local/nginx/sbin/$NAME SCRIPTNAME=/etc/init.d/$NAME # If the daemon file is not found, terminate the script. test -x $DAEMON || exit 0 d_start() { $DAEMON || echo -n " already running" } d_stop() { $DAEMON –s quit || echo -n " not running" } d_reload() { $DAEMON –s reload || echo -n " could not reload" } case "$1" in start) echo -n "Starting $DESC: $NAME" d_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" d_stop echo "." ;; reload) echo -n "Reloading $DESC configuration..." d_reload echo "reloaded." ;; restart) echo -n "Restarting $DESC: $NAME" d_stop # Sleep for two seconds before starting again, this should give the # Nginx daemon some time to perform a graceful stop. sleep 2 d_start echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2 exit 3 ;; esac exit 0
而後利用sysv-rc-conf命令將其在對應rc?.d目錄下創建一個軟連接:
root@wds-VirtualBox:~# sysv-rc-conf nginx on
該命令會在rc2.d ~ rc5.d目錄下都創建了一個nginx的軟連接。
做者:北極狐狸連接:https://www.jianshu.com/p/2e03255cfabb來源:簡書簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。