1. 程式人生 > >Linux下開機自啟動自定義shell指令碼

Linux下開機自啟動自定義shell指令碼

一、Ubuntu下

1、方法一,編輯rc.loacl指令碼 

Ubuntu開機之後會執行/etc/rc.local檔案中的指令碼,

所以我們可以直接在/etc/rc.local中新增啟動指令碼。【進入到/etc/rc5.d下,發現S99rc.local,即開機軟連結啟動順序99,在方法二設定開啟的之後】

當然要新增到語句:exit 0 前面才行。

如:

sudo vi /etc/rc.local

/home/neo/test.sh

exit 0

然後在 exit 0 前面新增好指令碼程式碼。

 2、方法二,新增一個Ubuntu的開機啟動服務。(此我設定的NN為95)

如果要新增為開機啟動執行的指令碼檔案,

可先將指令碼複製或者軟連線/etc/init.d/目錄下,

然後用:update-rc.d xxx defaults NN命令(NN為啟動順序),

將指令碼新增到初始化執行的佇列中去。

注意如果指令碼需要用到網路,則NN需設定一個比較大的數字,如99。
1) 將你的啟動指令碼複製到 /etc/init.d目錄下
 以下假設你的指令碼檔名為 test。
2) 設定指令碼檔案的許可權
 $ sudo chmod 755 /etc/init.d/test
3) 執行如下命令將指令碼放到啟動指令碼中去:
 $ cd /etc/init.d
 $ sudo update-rc.d test defaults 95
 注:其中數字95是指令碼啟動的順序號,按照自己的需要相應修改即可。在你有多個啟動指令碼,而它們之間又有先後啟動的依賴關係時你就知道這個數字的具體作用了。該命令的輸出資訊參考如下:
update-rc.d: warning: /etc/init.d/test missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
  Adding system startup for /etc/init.d/test ...
    /etc/rc0.d/K95test -> ../init.d/test
    /etc/rc1.d/K95test -> ../init.d/test
    /etc/rc6.d/K95test -> ../init.d/test
    /etc/rc2.d/S95test -> ../init.d/test
    /etc/rc3.d/S95test -> ../init.d/test
    /etc/rc4.d/S95test -> ../init.d/test
    /etc/rc5.d/S95test -> ../init.d/test

解除安裝啟動指令碼的方法:

$ cd /etc/init.d

$ sudo update-rc.d -f test remove

命令輸出的資訊參考如下:

Removing any system startup links for /etc/init.d/test ...
    /etc/rc0.d/K95test
    /etc/rc1.d/K95test
    /etc/rc2.d/S95test
    /etc/rc3.d/S95test
    /etc/rc4.d/S95test
    /etc/rc5.d/S95test
    /etc/rc6.d/K95test

檢視服務是否自啟動


檢視服務的當前狀態
#service test status

檢視服務的開機自動啟動狀態
#chkconfig --list test