Linux定時任務 Crontab

2021-08-02 03:45:36 字數 3556 閱讀 8525

crontab語法及應用

1:檢視當前使用者的定時任務

[oracle@localhost ~]$ crontab -l

* * * * * /home/oracle/test.sh >/dev/

null

2>&1

2:編輯當前使用者的定時任務

可以在編輯狀態修改、刪除、新增一些定時任務。注釋一般用#

[oracle@localhost ~]$ crontab -e

3:刪除當前使用者的定時任務

[root@localhost ~]# crontab -r

[root@localhost ~]# crontab -l

no crontab for root

4:如下所示,一般crontab檔案裡面的定時任務格式如下所示:

59 23 * * * /home/oracle/scripts/alert_log_archive.sh >/dev/null 2>&1

crontab 檔案中每個條目中各個域的意義和格式:

第一列 分鐘: 1——59

第二列 小時: 1——23(0表示子夜)

第三列 日 : 1——31

第四列 月 : 1——12

第五列 星期: 星期0——6(0表示星期天,1表示星期

一、以此類推)

第六列 要執行的命令

我們暫且用c1、c2、c3、c4、c5、c6代表這六列,前面五列通過組合方式來決定執行指令碼的頻率,最小頻率為每分鐘執行一次,其中cn可以用 * ; */n ; t1-t2; a,b,c; 四種形式來表示:

當 c1 為 * 時表示每分鐘都要執行指令碼,c2 為 * 時表示每小時都要執行程式,依次類推…..

當 c1 為 t1-t2 時表示從第 t1 分鐘到第 t2 分鐘這段時間內要執行,c2 為 t1-t2 時表示從第 t1 到第 t2 小時都要執行,依次類推….

當 c1 為 /n 時表示每 n 分鐘的時間間隔執行一次,c2 為 /n 表示每隔n小時的間隔執行一次,依次類推…..

當 c1 為 a, b, c,… 時表示第 a, b, c,… 分鐘要執行,c2 為 a, b, c,… 時表示第 a, b, c…個小時要執行,依次類推….

1: 59 23 * * * /home/oracle/scripts/alert_log_archive.sh >/dev/null 2>&1

表示每天23點59分執行指令碼/home/oracle/scripts/alert_log_archive.sh

2: /5 * * * /home/oracle/scripts/monitoring_alert_log.sh >/dev/null 2>&1

表示每5分鐘執行一次指令碼/home/oracle/scripts/monitoring_alert_log.sh

3: 0 20 * * 1-5 mail -s 「****[email protected] < /tmp/maildata

周一到周五每天下午 20:00 寄一封信給 [email protected]

關於 >/dev/null 2>&1 的解釋:

0表示鍵盤輸入

1表示標準輸出

2表示錯誤輸出.

我們首先建立test.sh指令碼如下:

vi printdate.sh:

#! /bin/sh

echo

"hello,everybody,now is " `date`

儲存退出

crontab -e

* * * * * /export/home

/fanjm/printdate.sh >> /export/home

/fanjm/printdatelog.txt 2>&1

儲存退出

more printdatelog.txt結果:

hello,everybody,now

ismon

jun 5 14:04

:01cst 2017

hello,everybody,now

ismon

jun 5 14:05

:01cst 2017

hello,everybody,now

ismon

jun 5 14:06

:01cst 2017

hello,everybody,now

ismon

jun 5 14:07

:01cst 2017

hello,everybody,now

ismon

jun 5 14:08

:01cst 2017

hello,everybody,now

ismon

jun 5 14:09

:01cst 2017

hello,everybody,now

ismon

jun 5 14:10

:01cst 2017

hello,everybody,now

ismon

jun 5 14:11

:02cst 2017

hello,everybody,now

ismon

jun 5 14:12

:01cst 2017

hello,everybody,now

ismon

jun 5 14:13

:01cst 2017

hello,everybody,now

ismon

jun 5 14:14

:01cst 2017

hello,everybody,now

ismon

jun 5 14:15

:01cst 2017

hello,everybody,now

ismon

jun 5 14:16

:01cst 2017

hello,everybody,now

ismon

jun 5 14:17

:01cst 2017

hello,everybody,now

ismon

jun 5 14:18

:01cst 2017

hello,everybody,now

ismon

jun 5 14:19

:01cst 2017

hello,everybody,now

ismon

jun 5 14:20

:01cst 2017

**注:2>&1 是將錯誤輸出重定向到標準輸出。 然後將標準輸入重定向到檔案log.txt。

配置定時任務時,需要注意兩個問題:

1: 在shell中設定了必要的環境變數;例如乙個shell指令碼手工執行ok,但是配置成後台作業執行時,獲取不到oracle的環境變數,這是因為crontab環境變數問題,crontab的環境預設情況下並不包含系統中當前使用者的環境。所以,你需要在shell指令碼中新增必要的環境變數的設定

2: 盡量所有的檔案都採用完全路徑方式,避免使用相對路徑。**

Linux linux定時任務crontab

crontab命令的功能是在一定的時間間隔排程一些命令的執行。它的配置檔案是 etc crontab。vim etc crontab etc crontab中每行指定乙個定時任務,其描述格式如下 minute hour daymonth dayofweek commandminute 從0到59的整...

linux定時任務 at定時任務

at命令是一次性定時計畫任務,at的守護程序atd會以後臺模式執行,檢查作業佇列來執行作業。atd守護程序會檢查系統上的乙個特殊目錄來獲取at命令的提交的作業,預設情況下,atd守護程序每60秒檢查一次目錄,有作業時,會檢查作業執行時間,如果時間與當前時間匹配,則執行此作業。注意 at命令是一次性定...

linux定時任務

crontab 設定定時任務 crontab 可以根據分鐘 小時 日期 月份 星期的組合來設定定時任務的自動執行 要使用該服務必須啟動 crond 服務,檢視 crond 服務有沒有啟動,執行命令 servicecrond status 一些任務事例,幫助理解 3020 root back.sh 每...