如何在Linux啟動(dòng)時(shí)自動(dòng)執(zhí)行命令或腳本
我一直很好奇,在啟動(dòng) Linux 系統(tǒng)并登錄的過程中到底發(fā)生了什么事情。按下開機(jī)鍵或啟動(dòng)一個(gè)虛擬機(jī),你就啟動(dòng)了一系列事件,之后會(huì)進(jìn)入到一個(gè)功能完備的系統(tǒng)中,有時(shí),這個(gè)過程不到一分鐘。當(dāng)你注銷或者關(guān)機(jī)時(shí),也是這樣。
更有意思的是,在系統(tǒng)啟動(dòng)以及用戶登錄或注銷時(shí),還可以讓系統(tǒng)執(zhí)行特定的操作。
本文,我們將探討一下在 Linux 操作系統(tǒng)中實(shí)現(xiàn)這些目標(biāo)的傳統(tǒng)方法。
注意:我們假定使用的是 Bash 作為登錄及注銷的主 Shell。如果你使用的是其他 Shell,那么有些方法可能會(huì)無(wú)效。如果有其他的疑問,請(qǐng)參考對(duì)應(yīng)的 Shell 文檔。
在啟動(dòng)時(shí)執(zhí)行 Linux 腳本
有兩種傳統(tǒng)的方法可以實(shí)現(xiàn)在啟動(dòng)時(shí)執(zhí)行命令或腳本:
方法 #1 - 使用 cron 任務(wù)
除了常用格式(分 / 時(shí) / 日 / 月 / 周)外,cron 調(diào)度器還支持 @reboot 指令。這個(gè)指令后面的參數(shù)是腳本(啟動(dòng)時(shí)要執(zhí)行的那個(gè)腳本)的絕對(duì)路徑。
然而,這種方法需要注意兩點(diǎn):
- a) cron 守護(hù)進(jìn)程必須處于運(yùn)行狀態(tài)(通常情況下都會(huì)運(yùn)行),同時(shí)
- b) 腳本或 crontab 文件必須包含需要的環(huán)境變量(如果有的話,參考 StackOverflow 獲取更多詳細(xì)內(nèi)容)。
方法 #2 - 使用 /etc/rc.d/rc.local
這個(gè)方法對(duì)于 systemd-based 發(fā)行版 Linux 同樣有效。不過,使用這個(gè)方法,需要授予 /etc/rc.d/rc.local 文件執(zhí)行權(quán)限:
- # chmod +x /etc/rc.d/rc.local
然后在這個(gè)文件底部添加腳本。
下圖說明如何分別使用 cron 任務(wù)和 rc.local 運(yùn)行兩個(gè)示例腳本(/home/gacanepa/script1.sh 和 /home/gacanepa/script2.sh)。
script1.sh:
- #!/bin/bash
- DATE=$(date +'%F %H:%M:%S')
- DIR=/home/gacanepa
- echo "Current date and time: $DATE" > $DIR/file1.txt
script2.sh:
- #!/bin/bash
- SITE="Tecmint.com"
- DIR=/home/gacanepa
- echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt
啟動(dòng)時(shí)執(zhí)行 Linux 腳本
*啟動(dòng)時(shí)執(zhí)行 Linux 腳本 *
記住,一定要提前給兩個(gè)示例腳本授予執(zhí)行權(quán)限:
- $ chmod +x /home/gacanepa/script1.sh
- $ chmod +x /home/gacanepa/script2.sh
在登錄或注銷時(shí)執(zhí)行 Linux 腳本
要在登錄或注銷時(shí)執(zhí)行腳本,分別需要使用 ~.bash_profile 和 ~.bash_logout 文件。多數(shù)情況下,后者需要手動(dòng)創(chuàng)建。在每個(gè)文件的底部,添加調(diào)用腳本代碼,如前面例中所示,就可以實(shí)現(xiàn)這個(gè)功能。
總結(jié)
本文主要介紹如何在啟動(dòng)、登錄以及注銷系統(tǒng)時(shí)執(zhí)行腳本。如果你有其他的方法可以補(bǔ)充,請(qǐng)使用下面的評(píng)論表給我們指出,我們期待您的回應(yīng)!
作者簡(jiǎn)介:
Gabriel Cánepa 是 GNU/Linux 系統(tǒng)管理員, 阿根廷圣路易斯 Villa Mercedes 的 web 開發(fā)人員。他為一家國(guó)際大型消費(fèi)品公司工作,在日常工作中使用 FOSS 工具以提高生產(chǎn)力,并從中獲得極大樂趣。