crontab整理

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:cron格式

如下所示,一般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腳本如下:

#!/bin/sh
echo "hello, everybody, now is " `date`
date >> test.txt

然後添加作業

* * * * * /home/oracle/test.sh >/home/oracle/log.txt & 默認值爲1,即和下面命令一致
* * * * * /home/oracle/test.sh 1>/home/oracle/log.txt &
* * * * * /home/oracle/test.sh 2>/home/oracle/log.txt &
* * * * * /home/oracle/test.sh 2>/home/oracle/log.txt 2>&1 &

1,2將tesh.sh 命令輸出重定向到log.txt, 即輸出內容不打印到屏幕上,而是輸出到log.txt文件中。如果你需要追加而不是覆蓋,可以用 >>代替>
2>&1 是將錯誤輸出重定向到標準輸出。 然後將標準輸入重定向到文件log.txt。
&1 表示的是文件描述1,表示標準輸出,如果這裏少了&就成了數字1,就表示重定向到文件1。
注意事項:
配置定時任務時,需要注意兩個問題:
1: 在SHELL中設置了必要的環境變量;例如一個shell腳本手工執行OK,但是配置成後臺作業執行時,獲取不到ORACLE的環境變量,這是因爲crontab環境變量問題,Crontab的環境默認情況下並不包含系統中當前用戶的環境。所以,你需要在shell腳本中添加必要的環境變量的設置
2: 儘量所有的文件都採用完全路徑方式,避免使用相對路徑。
crontab 需要使用絕對路徑,包括/sbin/
/usr/bin/下面基本不用,因爲有一個預定義好的PATH

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章