cron的任務計劃內容
一、在未來的某個時間點執行一次某任務
at 指定時間點,在未來的時間點一次性的執行某個任務
batch 不需要指定時間,但是它也只執行一次,batch的特性是在我們系統裏面控型的時候,自動的選擇這個控型的任務
at 時間
at> COMMAND 在at提示符下輸入要執行的命令
at> Ctrl+d 表示提交
指定時間:10:20 10點20分
now+3m:從這點開始往後的三分鐘,即3分鐘以後
絕對時間:HH:MM, DD.MM.YY MM/DD/YY
at 8:10 指離這一次最近的8:10
相對時間:now+#
單位:minutes,hours,days,weeks
eg:at now+6hours 從這點開始往後的6小時
模糊時間:noon,midnight,teatime(下午4點)
命令的執行結果:將以郵件的的形式發送給安排任務的用戶
at -l: 顯示作業的列表 (列表中的a表示隊列)
at -l = atq
at -d: 刪除作業
at -d AT_JOB_ID = artm AT_JOB_ID
/etc/at.allow: 白名單 寫在這個文件中的用戶都允許使用at
/etc/at.deny: 黑名單 寫在這個文件中的用戶都不允許使用at
若/etc/at.allow和/etc/at.deny都存在,只有allow允許使用at
若/etc/at.allow和/etc/at.deny都不存在,只允許root使用at
若/etc/at.deny爲空或只有/etc/at.allow存在,任何人都可以使用at
二、週期性地執行某任務
必須能夠實現以服務的方式不停的監控某些腳本或某些任務的執行情況,這時就需要用一些服務來實現,這個服務就叫cron
cron : 自身是一個不間斷運行的服務 (需運行在一個長期不關機的服務器上)
anacron:cron的補充,能夠實現讓cron因爲各種原因在過去的時間該執行而爲之行的任務在恢復正常執行一次;
cron:
系統cron任務
定義在/etc/crontab中
格式:分鐘 小時 天 月 周 用戶 任務
用戶cron任務
定義在/var/spool/cron/USERNAME中
格式:分鐘 小時 天 月 周 任務
時間的有效取值:
分鐘:0-59
小時:0-23
天:1-31
月:1-12
周:0-7,0和7都表示週日
時間通配表示:
*:對應的所有有效取值
3 * * * * 每小時的第3分鐘執行一次
3 * * * 7 每禮拜天的每個小時第3分鐘執行一次
13 12 * * * 每天的12:13執行一次
13 12 * * * 5 每週五的12:13執行一次
13 12 6 7 * 每年的7月6號12點13分執行一次
,;離散時間點
10,40 * * * * 每小時的第10分和第40分執行一次
10,40 * * * * 2,5 每週二週五的每小時的10分40分執行一次
-:連續時間點
10 02 * * 1-5 每週從週一到週五的2點10分執行一次
/#:對應取值範圍內每多久一次
* */2 * * * 每隔1個小時執行一次
*/3 * * * * 每3分鐘執行一次
01 */2 * * * 每兩小時執行一次
10 04 */2 * * 每兩天執行一次
執行結果將以郵件形式發送給管理員:
*/3 * * * */bin/cat /etc/fstab &> /dev/null
三、cron的環境變量:cron執行的所有命令都去PATH環境變量指定的路徑下去找
PATH /bin:/sbin/:/usr/bin:/usr/sbin
vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts 實現運行這個目錄下的每一個腳本
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.mouthly
用戶任務的管理:
crontab
-l:列出當前用戶的所有cron任務
-e:編輯
eg: crontab -e
編輯內容:*/3 * * * * /bin/echo "how are you?"
-r:移除所有任務
-u USERNAME:管理其他用戶的cron任務
eg:crontab -u hadoop -e
編輯內容:*/3 * * * * /bin/echo "how are you?"
然後 ls /var/spool/cron/ 就可顯示hadoop
最後su - hadoop 執行crontab -l 就可顯示*/3 * * * * /bin/echo "how are you?"
四、cron的補充anacron
最小操作單位是天,最多隻能堅持到每天任務、每週任務和每月任務
vim /etc/anacrontab
SHELL=/bin/sh --指定解釋器爲bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin --爲任務執行指定環境變量
MAILTO=root --指定發送郵件的用戶
1 65 cron.daily run-parts /etc/cron.daily
7 70 cron.weekly run-parts /etc/cron.weekly
30 75 cron.monthly run-parts /etc/cron.monthly
以上三列從左往右四個字段分別代表的含義:
時間間隔:執行任務的時間間隔,單位爲天(周、月)
等待時間:在時間間隔到期後,如果任務沒有順利執行,則會等待此處設置的時間,然後再次進行嘗試執行
任務標識:有關此任務的說明,它可包括任何非空格的字符(/除外),通常都用在anacron信息中或是此任務的時間戳文件名
命令:實際執行的任務
注意:無論是cron還是anacron必須確保cron服務一定得執行
service crond status
service anacron status