如何優(yōu)雅地實(shí)現(xiàn)Ubuntu/CentOS等Linux系統(tǒng)開機(jī)自啟動(dòng)自定義腳本

在舊時(shí)代是使用update-rc.d命令來(lái)操作的,具體步驟可以查閱網(wǎng)上其他資料,在這里介紹使用systemctl命令來(lái)更加優(yōu)雅地實(shí)現(xiàn)。

0x01 編寫腳本

腳本存放在/etc/init.d位置下,文件名如 hello,記得加上可執(zhí)行權(quán)限。

sudo vi /etc/init.d/hello
sudo chmod +x /etc/init.d/hello

腳本將由root用戶自動(dòng)執(zhí)行,編寫時(shí)涉及到文件等一些權(quán)限操作時(shí)注意一下就好。
對(duì)于腳本的內(nèi)容。。。emmm..確實(shí)是有點(diǎn)格式要求的,一開始我直接就擼了一句

echo "hello" >> /home/ubuntu/log

然而并無(wú)卵用,正確的姿勢(shì)應(yīng)該是這樣的,最簡(jiǎn)單的腳本如下:

#!/bin/sh
### BEGIN INIT INFO
# Default-Start:  2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
echo "hello world" >> /home/ubuntu/log

開頭的那幾行注釋,一句都必不可少,shell可以換成#!/bin/bash,也可以是其他的都行。但必須有指定腳本所使用的shell。注釋完后就是自己寫的腳本內(nèi)容了,我這里只是隨便hello了一下。
Default-Start、 Default-Stop 是指腳本在哪個(gè)runlevel被執(zhí)行,以上的2345是最常見的運(yùn)行等級(jí),一般腳本都這樣寫就行了。
詳情點(diǎn)我看Linux標(biāo)準(zhǔn)

0x02 設(shè)置腳本開機(jī)自啟動(dòng)

這里就可以優(yōu)雅地使用systemctl命令了,一句話搞定:

sudo systemctl enable hello

如果腳本里那幾行注釋沒(méi)有缺少的話,是不會(huì)有任何報(bào)錯(cuò)的。
如果出現(xiàn)

update-rc.d: error:  XXX Default-Start contains no runlevels, aborting.

意味著,腳本里缺少了運(yùn)行級(jí)別的說(shuō)明,并不知道什么時(shí)候啟動(dòng)。
如果沒(méi)有指定shell,腳本可能無(wú)法成功執(zhí)行。

0x03 Good Luck

sudo reboot

重啟幾次看看腳本執(zhí)行成功了沒(méi)有吧~~~每一次重啟,那個(gè)log文件都會(huì)多一句hello world。

0x04 取消腳本開機(jī)自啟動(dòng)

sudo systemctl disable hello

0x05 調(diào)整啟動(dòng)順序

有些程序需要先有網(wǎng)絡(luò)才能順利啟動(dòng),可以采用官方的例子,調(diào)整啟動(dòng)順序:

# Required-Start: $local_fs $network $remote_fs

就是在有網(wǎng)、本地文件系統(tǒng)、遠(yuǎn)程文件系統(tǒng)都就緒情況下再啟動(dòng)本服務(wù)。

### BEGIN INIT INFO
# Provides: lsb-ourdb
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start:  2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop OurDB
# Description: OurDB is a very fast and reliable database
#    engine used for illustrating init scripts
### END INIT INFO

Linux就是這么簡(jiǎn)單優(yōu)雅~???

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容