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