如何在 Linux 啟動時自動執行命令或指令碼
我一直很好奇,在啟動 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/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
*啟動時執行 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 工具以提高生產力,並從中獲得極大樂趣。
via: http://www.tecmint.com/auto-execute-linux-scripts-during-reboot-or-startup/
作者:Gabriel Cánepa 譯者:zhb127 校對:jasminepeng
相關文章
- 如何在Docker容器啟動時自動執行指令碼Docker指令碼
- 啟動vi時自動執行的指令碼指令碼
- Linux(CentOS)啟動時自動執行指令碼(rc.local)LinuxCentOS指令碼
- LINUX 自動執行指令碼的命令配置Linux指令碼
- Linux啟動/關機時執行指令碼Linux指令碼
- 在 Linux 命令列指令碼中執行 sudo 時自動輸入密碼Linux命令列指令碼密碼
- Linux管理指令碼之自動執行指令碼Linux指令碼
- Linux自啟動指令碼Linux指令碼
- Linux、UNIX設定開機自動執行命令、指令碼配置Linux指令碼
- Linux配置開機自啟動執行指令碼方法有哪些?Linux指令碼
- 使用php作linux自動執行指令碼PHPLinux指令碼
- linux開機自動啟動指令碼Linux指令碼
- Linux 定時執行指令碼、命令Linux指令碼
- UNIX crontab自動執行指令碼指令碼
- windows自動登入linux 並執行指令碼WindowsLinux指令碼
- linux下rman增量備份指令碼以及指令碼自動執行Linux指令碼
- Linux 下oracle自啟動指令碼LinuxOracle指令碼
- 設定Linux關機時自動執行指定命令Linux
- Orale自動啟動以及關閉指令碼_linux指令碼Linux
- centos 自動啟動指令碼和自啟動服務CentOS指令碼
- Linux中配置開機自啟動執行指令碼的方法是什麼?Linux指令碼
- Ubuntu自動啟動配置指令碼Ubuntu指令碼
- 網路卡自動啟動指令碼指令碼
- Linux 新增指令碼開機自啟動Linux指令碼
- linux下新增oracle自啟動指令碼LinuxOracle指令碼
- sqlplus執行指令碼時遇到錯誤自動停止SQL指令碼
- 開機自動執行python指令碼Python指令碼
- Linux開機啟動程式或指令碼詳解Linux指令碼
- Linux配置開機自啟動執行指令碼方法有哪些?常見介紹!Linux指令碼
- windows下oracle自動啟動指令碼WindowsOracle指令碼
- Slackware啟動指令碼與System V啟動指令碼的區別何在?(轉)指令碼
- Linux下Oracle隨機自動啟動指令碼設定LinuxOracle隨機指令碼
- Linux系統如何設定開機自動執行指令碼?Linux指令碼
- .net 程式通過 crontab 無法啟動,手動執行指令碼可以啟動指令碼
- linux-啟動指令碼Linux指令碼
- 啟動SQL SERVER時自動執行儲存過程(轉)SQLServer儲存過程
- 執行 adb 命令的時候自動生成並啟動 ._cache_adb.exe 程式
- 開機自啟動Powershell指令碼指令碼