我一直很好奇,在
啟動 linux 系統
並登入
的過程中到底發生了什麼事情。按下開機鍵或啟動乙個虛擬機器,你就啟動了一系列事件,之後會進入到乙個功能完備的系統中,有時,這個過程不到一分鐘。當你登出或者關機時,也是這樣。
更有意思的是,在系統啟動以及使用者登入或登出時,還可以讓系統執行特定的操作。
本文,我們將**一下在 linux
作業系統中實現這些目標的傳統方法。
注意:我們假定使用的是
bash
作為登入及登出的主 shell
。如果你使用的是其他
shell
,那麼有些方法可能會無效。如果有其他的疑問,請參考對應的
shell
文件。
在啟動時執行 linux 指令碼
有兩種傳統的方法可以實現在啟動時執行命令或指令碼:
方法 #1 - 使用
cron 任務
除了常用格式(分 /
時 /
日 /
月 /
周)外,
cron 排程器
還支援@reboot
指令。這個指令後面的引數是指令碼(啟動時要執行的那個指令碼)的絕對路徑。
然而,這種方法需要注意兩點:
· a) cron
守護程序必須處於執行狀態(通常情況下都會執行),同時
· b)
指令碼或
crontab
檔案必須包含需要的環境變數(如果有的話,參考
stackoverflow
獲取更多詳細內容)。
方法 #2 - 使用
/etc/rc.d/rc.local
這個方法對於 systemd-based
發行版
linux
同樣有效。不過,使用這個方法,需要授予
/etc/rc.d/rc.local
檔案執行許可權:
# chmod +x /etc/rc.d/rc.
local
然後在這個檔案底部新增指令碼。
下圖說明如何分別使用 cron
任務和
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
* 啟動時執行
linux
指令碼 *
記住,一定要提前給兩個示例指令碼授予執行許可權:
$ chmod +x /home/gacanepa/script1.sh
$ chmod +x /home/gacanepa/script2.sh
在登入或登出時執行 linux 指令碼
要在登入或登出時執行指令碼,分別需要使用
~.bash_profile 和
~.bash_logout
檔案。多數情況下,後者需要手動建立。在每個檔案的底部,新增呼叫指令碼**,如前面例中所示,就可以實現這個功能。 總結
作者簡介:
gabriel cánepa
是 gnu/linux
系統管理員, 阿根廷聖路易斯
villa mercedes
的 web
開發人員。他為一家國際大型消費品公司工作,在日常工作中使用
foss
工具以提高生產力,並從中獲得極大樂趣。
中國
Linux學習之shell指令碼
第一行 bin bash 標記指令碼的直譯器 指令碼 bin bash echo hello world 賦予執行許可權 chmod x test.sh 執行指令碼 test.sh 定義變數時不需要 符號 td date y m d 1.變數名和符號之間不能有空格 2.首個字元必須為字母 3.中間不...
linux之shell指令碼學習
1,linux的shell種類眾多。shell常見種類如bourne shell usr bin sh或 bin sh bourne again shell bin bash c shell usr bin csh k shell usr bin ksh shell for root sbin sh...
linux學習之命令
系統時間檢視 date 系統時間修改,系統重啟後修改會失效 date s 2019 06 27 21 21 21 硬體時間檢視 hwclock 硬體時間修改 hwclock set date 2019 06 27 21 21 21 硬體時間與系統時間同步 hwclock hctosys 修改時區 c...