1. 程式人生 > >Linux 執行定時任務 shell指令碼

Linux 執行定時任務 shell指令碼

Linux上面執行定時任務,我們可以利用crontab -e直接編輯定時任務 另外我們還可以寫好shell指令碼,定時去執行shell指令碼,這兩個方法都可以起到定時執行的作用

下面我詳細說一下入如何執行shell指令碼

1.宣告一下我安裝的lnmp環境,shell指令碼存放的位置在 /usr/local/sbin路徑下面

新建一個test.sh

#! /bin/bash  
echo "yes" >> /home/abc.txt
儲存完畢後記得給予許可權 chmod 777 test.sh

Shell指令碼通常都是以.sh 為字尾名的,這個並不是說不帶.sh這個指令碼就不能執行,只是大家的一個習慣而已。所以,以後您發現了.sh為字尾的檔案那麼它可能是一個shell指令碼了。test.sh中第一行要以 “#! /bin/bash” 開頭,它代表的意思是,該檔案使用的是bash語法。如果不設定該行,雖然您的shell指令碼也可以執行,但是這不符合規範。 # 表示註釋,在前面講過的。後面跟一些該指令碼的相關注釋內容以及作者和建立日期或者版本等等。當然這些註釋並非必須的,如果您懶的很,可以省略掉,但是不建議省略。因為隨著工作時間的逐漸過渡,您寫的shell指令碼也會越來越多,如果有一天您回頭檢視自己寫過的某個指令碼時,很有可能忘記該指令碼是用來幹什麼的以及什麼時候寫的。所以寫上註釋是有必要的。另外系統管理員並非只有您一個,如果是其他管理員檢視您的指令碼,他看不懂豈不是很鬱悶。下面該執行一下這個指令碼了:

2.將shell指令碼加入定時任務

crontab -e

* * * * * /usr/local/sbin/test.sh

參  數:
-e  編輯該使用者的計時器設定。
-l  列出該使用者的計時器設定。
-r  刪除該使用者的計時器設定。
-u<使用者名稱稱>  指定要設定計時器的使用者名稱稱。

crontab 格式:

分鐘   小時   日   月   星期   命令

*        *      *    *     *       *

第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列 表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要執行的命令

記住幾個特殊符號的含義:
“*”代表取值範圍內的數字,
“/”代表”每”,
“-”代表從某個數字到某個數字,
“,”分開幾個離散的數字

3.檢視執行test.sh指令碼的結果

[[email protected] home]# cat abc.txt 
yes
yes
yes
yes
執行成功  666