linux中任務計劃:
一次性執行:
at,batch
batch:不需要指定時間,會在空閑時間執行
周期性執行:
vixie cron:crontab
我們通常看到的是crontab,crontab實際上是個表格或者說是檔案,來為vixie cron的一個程序crond提供配置資訊
1、一次性任務執行:
at TIME
at>
Ctrl+d:送出任務
at -l = atq:檢視等待執行的任務
at 11:30
noon,midnight,teatime
例:
執行結果以郵件方式發送給任務發起者:
删除尚未執行的任務:
at -d JOB_ID = atrm JOB_ID
# at -d 2 或者 # atrm 2
任務隊列
多個
a
at -f /PATH/TO/AT_SCRIPT TIME
2、周期性任務執行
vixie cron
crond:daemon守護程序
/etc/init.d/
uptime:檢視目前系統是什麼時候啟動的,運作多久時間了,并且目前系統負載是什麼
crond:配置檔案
crontab:
系統cron:/etc/crontab
使用者cron:/var/spool/cron/USERNAME
a、運作者身份:
使用者cron:定義者
6個字段,與系統cron相比,無需指定使用者身份
使用者cron的定義:
crontab(類似于vim) 執行之後,會儲存在/var/spool/cron/目錄下一個以目前使用者命名的檔案
-e:
-r:移除配置檔案,删除所有任務
-l:列出周期性任務
-u USERNAME:
crontab -e -u hadoop
系統cron:在配置檔案中指定
7個字段
通配符:
*:相應時間點的所有有效取值
,:離散取值
3,10,17,24 * * * * root cat /etc/fstab 每小時的第3分鐘,第10分鐘,執行這個指令
3,33 * * * * root cat /etc/fstab 每半小時執行一次
/:定義指定取值範圍内的頻率
*/3 * * * * root cat /etc/fstab 每三分鐘執行一次
-:連續取值
1 8-20/3 * * * root cat /etc/fatab 從8點到晚上8點每三小時的第一分鐘執行一次
每兩天的早上2點7分将etc下所有檔案打包成etc-`date +%F`.tar.xz格式放在backup目錄下
7 2 */2 * * root tar -Jcf /backup/etc-`date +%F`.tar.xz /etc/*
周一到周五8點到18點每隔3個小時執行兩次
2,32 8-18/3 * * 1-5
b、PATH:
/bin:/sbin:/usr/bin:/usr/sbin
如果是指令:使用絕對路徑
如果是腳本:在腳本中自定義PATH
c、拒收郵件
方法一:
MAILTO=''
方法二:
&> /dev/null
以秒為機關執行任務計劃:
方法1:
* * * * * /usr/bin/unison webdata 每分鐘執行一次
* * * * * sleep 30 && /usr/bin/unsion webdata
方法2:
* * * * * for i in 0 1 2; do some_job & sleep 15; done; some_job
第0秒,循環第一次(第一次執行指令),睡15秒
第15秒,循環第二次(第二次執行指令),睡15秒
第30秒,循環第三次,睡15秒
第45秒,執行最後一個指令
注:使用%時要加反斜線,例:
1 2 3 * * touch ~/file_$(data +\%Y\%m\%d).txt
但使用單引号後可以不再使用反斜線,例:
1 2 3 * * touch ~/file_$(data +'%Y%m%d').txt