一、任務計劃分爲兩類
一次性:
at, batch
週期性:
vixie cron: crontab一次性任務執行:
at now+3min
at 11:30
noon, midnight, teatimeat TIME
at> 命令/腳本
Ctrl+d: 提交任務at -l = atq 列出等待執行的任務
執行結果以郵件方式發送給任務發起者;
查看郵件:
# mail 顯示所有列表
& # 加數字顯示單個
& q 退出顯示刪除尚未執行的任務:
at -d JOB_ID = atrm JOB_IDat -f /PATH/TO/AT_SCRIPT TIME 調用文件中命令列表 at腳本
at任務實際應用舉例,修改遠程服務器IP前 設定任務 以防修改IP後鏈接丟失 如修改IP無問題再取消任務
週期性任務:
vixie cron
crond: daemon
守護進程: daemon
/etc/init.d/uptime 系統資源狀態查看
crond: 配置文件
crontab:
系統cron:/etc/crontab用戶cron: /var/spool/cron/USERNAME
1、運行者身份;
用戶cron: 定義者
6個字段,與系統cron相比,無需指定用戶身份
系統cron: 在配置文件指定
7個字段# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed 以哪個用戶身份執行3 4 * * * root cat /etc/fstab 每天4時3分 周幾不與月日同時用
通配符:
*:相應時間點的所有有效取值
,: 離散取值, 3,18,33,48 * * * * root cat /etc/fstab
/: 定義指定取值範圍內的頻率, 例如:*/3 * * * * root cat /etc/fstab */3 即每三分鐘 17 */3 * * * root cat /etc/fstab 每三小時的第17分執行一次
-: 連續取值:17 8-20/3 * * * root cat /etc/fstab3 18 * * 2,5
7 2 */2 * * root tar -Jcf /backup/etc-`date '+%F'`.tar.xz /etc/*2,32 8-18/3 * * 1-5
2、PATH
/bin:/sbin:/usr/bin:/usr/sbin
如果是命令:使用絕對路徑
如果是腳本:在腳本自行定義PATH=3、拒收郵件
方法一:
MAILTO=‘’空即不發
方法二:
&> /dev/null 常用方法
用戶cron的定義: 位於/var/spool/cron/目錄下
crontab
-e 與直接vm相比此方法可提示語法錯誤
-r: 移除配置文件,會刪除所有任務;
-l: 列出週期性任務
-u USERNAME
crontab -e -u hadoop
crontab, process, function, sed, awk, boot, grub, kernel
以秒單位執行任務計劃:
方法1:
* * * * * /usr/bin/unison webdata ;sleep 30;/usr/bin/unison webdata 或者如下
* * * * * sleep 30 && /usr/bin/unison webdata方法2:
* * * * * for i in 0 1 2; do some_job && sleep 15; done; some_job
0: 15,
15:30
30: 45
45:* * * * * for i in {1..5}; do some_job && sleep 10; done; some_job
注意:使用%時要加反斜線。例如:
1 2 3 * * touch ~/file_$(date +\%Y\%m\%d).txt但使用單引號後也可以不再使用反斜線,例如:
1 2 3 * * touch ~/file_$(date '+%Y%m%d').txt
禁止在自動任務執行後發送電子郵件:將輸出結果重定向至/dev/null:
>/dev/null 2>&1 或
&> /dev/null在文件的開始部分加入命令來關閉所有命令的郵件輸出:
MAILTO=""
anacron: 紅帽5 檢查時間已過但未執行的任務並在合適的時間重新執行。cronie: 紅帽6的機制