Linux基础(九)--定时任务
本文主要介紹了Linux中定時任務的相關知識。
在日常中,有一些任務需要定時執行,例如:每天定時更新殺毒軟件的數據庫,每天定時執行數據清洗等腳本。這里就需要做定時任務。
(1)概述
在Linux中定時任務主要分為兩種:一次性任務和周期性任務。
一次性任務使用的命令是at和batch;
周期性任務使用的命令是vivex和cron。
(2)一次性定時任務
①命令at
②設置定時任務:at TIME
其中后面的TIME可以用準確時間和模糊時間。
例如:
? ?at now+3min ? ?at 11:30? ?at noon,midnight,teatime(下午四點)
如圖,使用at now+3min,定時3分鐘后的任務:
如圖使用at命令后會出現at的提示符,只用輸入要執行的命令即可:
在輸入完要執行的命令后,按ctrl+D提交即可:
執行的結果將以郵件的形式返回給任務發起者。使用mail命令可以查看郵件。
這里我有很多定時任務的郵件,只需要鍵入相應的編號即可查看郵件
查看郵件完畢,鍵入q即可退出
③列出尚未執行的定時任務
at -l
④刪除尚未執行的定時任務
at -d #或者atrm #
④執行文件中的命令
at -f /PATH/TO/AT_SCRIPT TIME
例如:文本attest.txt文本如下
使用at -f指定文本文件中的命令執行時間
執行后結果如下:
(3)周期性定時任務
①概述
周期性定時任務常用crond來使用,這是一個daemon。常用的命令是crontab。它主要分為系統cron和用戶cron。
其中系統cron在/etc/crontab中。如下圖:
用戶cron在/var/spool/cron/USERNAME中:
②crontab命令
1.運行者身份
(1)系統cron:在配置文件中指定
一共7個字段,如 3 4 * * * root cat /etc/fstab。中間用空格分隔,前面對應完后6個空格對應完后,剩下的空格統一歸為最后一個字段的命令。
其中每個字段分別表示:分鐘 小時 在月中的日(1-31) ?月(1-12) ?星期 ?用戶 ?命令。
(2)用戶cron: 6個字段,與系統cron相比,無需指定用戶身份。
①命令crontab
? ?使用crontab后會出現類似文本編輯的頁面,只需要編輯相應的定時命令即可。
②選項:
? ?-e:定義; ? ?-r:移除配置文件,會刪除所有任務; ? ?-l:列出周期性任務。
? ?-u USERNAME:以其他用戶身份定義。例如:crontab -e -u hadoop
(3)通配符:
*:相應時間點的所有有效取值
,:離散取值, ?3,33 ****root date
/:定義指定取值范圍內的頻率, ?*/3 * * * *:每3分鐘-:連續取值:8-20/3 ?13 8-20/3 * * *
2.PATH
cron默認路徑: /bin;/sbin;/usr/bin;/usr/sbin ?如果是命令:使用絕對路徑
?如果是腳本:在腳本中自行定義PATH=
3.如何拒收郵件: ?方法一: ? ?MAILTO='' ?方法二:
? ?&> /dev/null
4.小例子:
?3 18 * * 2,5: 每周2和周5的18點3分 ?7 2 */2 * *:每兩天的2點7分
?2,32 8-18/3 * * 1-5:星期1到5的8到18點中每3個小時的2分和32分
5.以秒為單位執行任務計劃:
方法一:* * * * * /usr/bin/unison webdata* * * * * sleep 30 & /usr/bin/unison webdata
方法二:每隔15秒:* * * * * for i in 0 1 2; do some_job && sleep 15; done; some_job
每隔10秒:* * * * * for i in {1..5}; do some_job && sleep 10; done; some_job
6.注意事項:
①使用%時要加反斜線。
②在RHEL5有anacron,這是對cron的補充。
他會尋找過去沒執行的任務找一個合適的時間點執行。例如,用戶定時每天凌晨3點更新殺毒軟件庫,但2點關機,因此任務不會執行。這樣anacron會在下一次開機后找一個合適的時間執行。而RHEL6cronie本身就有這個功能。轉載于:https://blog.51cto.com/xlows/1390619
總結
以上是生活随笔為你收集整理的Linux基础(九)--定时任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unicode字符、python乱码问题
- 下一篇: 关于shell脚本编程一些有用资源的小结