詳解如何在 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ì)無效。如果有其他的疑問,請(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 腳本 *
記住,一定要提前給兩個(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)!也希望大家多多支持腳本之家。
相關(guān)文章
LNMP下FTP服務(wù)器的安裝與使用方法(Pureftpd和Proftpd)
FTP是網(wǎng)站文件維護(hù)中使用比較多的,目前LNMP一鍵安裝包中有Pureftpd和Proftpd服務(wù)器安裝腳本2013-06-06
Apache服務(wù)器關(guān)閉TRACE Method請(qǐng)求方式的方法
這篇文章主要介紹了Apache服務(wù)器關(guān)閉TRACE Method請(qǐng)求方式的方法,因?yàn)橹С衷摲绞降姆?wù)器存在跨站腳本漏洞,需要的朋友可以參考下2014-06-06
Linux刪文件力度過大導(dǎo)致IO占用太高的解決方案
這篇文章主要介紹了Linux刪文件力度過大導(dǎo)致IO占用太高的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
Linux系統(tǒng)目錄大小通過du命令獲取實(shí)例
在本篇文章里小編給大家整理的是一篇關(guān)于Linux系統(tǒng)目錄大小通過du命令獲取實(shí)例內(nèi)容,需要的朋友們可以參考學(xué)習(xí)下。2020-11-11
在Linux中刪除超大(100-200GB)文件的實(shí)現(xiàn)方式
這篇文章主要介紹了在Linux中刪除超大(100-200GB)文件的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04

