linux學習之命令或指令碼的啟動詳解

2021-07-28 09:37:54 字數 2014 閱讀 1892

我一直很好奇,在

啟動 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...