Linux 執行定時任務 shell指令碼

2021-08-26 09:44:04 字數 1890 閱讀 3594

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

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

#! /bin/bash

echo "yes" >> /home/abc.txt

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

crontab -e

* * * * * /usr/local/sbin/test.sh
引數:

-u: 只有root才能進行這個任務,也即幫其他使用者新建/刪除crontab工作排程;

-e: 編輯crontab 的工作內容;

-l: 查閱crontab的工作內容;

-r: 刪除所有的crontab的工作內容,若僅要刪除一項,請用-e去編輯。

範例一:用dmtsai的身份在每天的12:00發信給自己

crontab -e

#此時會進入vi的編輯介面讓你編輯工作。注意到,每項工作都是一行。

0    12   *   *   *   mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc

#分 時 日 月 周 |《**********====命令列********************===》|

代表意義

分鐘小時

日期月份周命令

數字範圍

0~59

0~23

1~31

1~12

0~7就命令啊

周的數字為0或7時,都代表「星期天」的意思。另外,還有一些輔助的字元,大概有下面這些:

特殊字元  

代表意義

*(星號)

代表任何時刻都接受的意思。舉例來說,範例一內那個日、月、週都是*,就代表著不論何月、何日的禮拜幾的12:00都執行後續命令的意思。

,(逗號)

代表分隔時段的意思。舉例來說,如果要執行的工作是3:00與6:00時,就會是:

0 3,6 * * * command

時間還是有五列,不過第二列是 3,6 ,代表3與6都適用

-(減號)

代表一段時間範圍內,舉例來說,8點到12點之間的每小時的20分都進行一項工作:

20 8-12 * * * command

仔細看到第二列變成8-12.代表 8,9,10,11,12 都適用的意思

/n(斜線)

那個n代表數字,即是每隔n單位間隔的意思,例如每五分鐘進行一次,則:

*/5 * * * * command

用*與/5來搭配,也可以寫成0-59/5,意思相同

[root@iz2ze2ewt14msyueuiq693z home]# cat abc.txt

yesyes

yesyes

執行成功  666

linux定時任務執行

crontab命令 一 定時運算元據庫 在開發過程中,有每天更新資料庫的需求,所以用crontab加了乙個定時器 crontab e 0 2 usr bin mysql uroot p123 ddbname dev null 2 1 每天兩點執行test.sql etc init.d crond r...

linux執行定時任務

linux執行定時任務 是否安裝crontab root localhost mysql bak crontab bash crontab command not found 證明沒有安裝,執行 yum y install vixie cron 3.可執行檔案是都正確 4.編輯定時任務 cronta...

linux定時任務執行

定時備份檔案 建立資料夾 mkdir p data backdata mkdir p data logs mkdir p data mysqlbak 進入資料夾 cd data mysqlbak 建立檔案touch backup.sh 編輯檔案 vi backup.sh 新增下面的內容 date d...