1 什麼是例行性工作
如,週報,週會等定期的。
如果計算機能夠主動通知,則輕鬆方便很多。這就產生了定時任務。
不由得 讓人想到相關的幾點內容,時鐘週期,定時器,和AI。特此總結了一個圖片,如下,不由得感慨,當年計算機的誕生其中關鍵一點時鐘週期的思想真是優秀。讓死的一行一行的文字內容成了活的可執行的,crontab讓一項一項功能成了活的,小到鬧鈴大到機械化的工業製造,而如今津津樂道的AI,也是在此基礎上進行深度學習或者訓練模型,進行功能的自我迭代和數據模擬建模分析等,以達到更高的要求。一切的思想是有共性的。向前輩看齊。
1.1 Linux工作調度的種類
例行性:crontab。對應的服務是crond。定時器。
# .---------------- 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
突發性:at。對應的服務是atd。處理僅執行一次的任務。
通常設置這些內容不要忘了,開機自啓:
chkconfig atd/* on /etc/init.d/atd start/stop/restart
1.2 常見的例行性工作
– 進行日誌文件的輪替,log rotate
– 日誌文件分析logwatch的任務
– 新增locate的數據庫
– whatis數據庫的建立
– RPM軟技日誌文件的新建
– 刪除臨時文件
– 與網絡服務有關的分析行爲
2 僅執行一次的工作調度
at與atd服務
atd服務對應/etc/init.d/atd status ,該服務的開啓與狀態。
使用:
at [-mldv] TIME
at -c 執行任務
最重要的地方在於時間的指定。
例子:
at 23:00 2020-02-27
at>/bin/sync
at>/bin/sync //命令的執行,儘量使用絕對路徑
at>/sbin/shutdown -h now
at><EOF> //ctrl + d 進入到退出模式
綜上,at功能,指定命令執行時間, 後臺執行。
at的特性
後臺執行,脫機繼續工作
at在工作調度的使用上,系統會將該項at工作獨立出系統bash環境,直接交給系統atd程序來接管,因此,執行了at的工作可以立刻脫機,剩下的工作完全交給linux管理。
at管理
atq //查詢at工作
atrm //刪除
利用batch指定較空閒執行:
batch是利用at來進行命令的執行。 其中一個重要特性:
會在CPU工作負載小於0.8的時候,才進行執行工作任務。
如果系統極其繁忙的情況下,還要額外的at,不合理。所以纔有batch這個命令。
batch依舊是使用atq和atrm的命令進行管理任務。
3 循環執行的例行性工作調度
crond系統服務進行控制
crontab命令
crontab -h
-u <user> define user
-e edit user's crontab
-l list user's crontab
-r delete user's crontab
-i prompt before deleting
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-x <mask> enable debugging
-
用戶控制
用戶對應的crontab工作記錄在/var/spool/cron/username 裏面。
cron執行的每一項工作都會被記錄到/var/log/cron日誌文件。 -
crontab語法
* * * * * command
分 時 日 月 周
----------------------
* :任意值都接受
,: 如:0 3,6 ,表示3和6兩個值
- : 如1-3, 表示1,2,3
/n: 每隔n個單位。
- 配置文件 /etc/crontab
crontab -e是針對用戶cron設計的。 配置文件爲/etc/crontab.
注意事項: 修改完/etc/crontab之後,需要重啓crond服務。
/etc/init.d/crond restart
MAILTO,輸入輸出信息的傳遞通知人員,例如可以設置爲[email protected]
PATH= ,輸入執行文件的查找路徑,一般使用默認的設置就夠了。
/etc/cron.hourly文件,每小時執行該目錄下的script文件。
- 注意事項
大量工作同頻率執行,容易造成系統問題,注意給系統分配不同運行時間。
周與日月不可並存。並存的情況下,在匹配到具體設定指揮會分別都進行執行。
4 可喚醒停機期間的工作任務
針對關機情況下如何進行例行性工作。
anacron工具
功能:以天爲單位或者開機後立刻執行,監測停機期間,應該進行但是並沒有進行的crontab任務,並將該任務執行一遍,完成後停止。
anacron通過讀取timestamps來確定系統的關機時間。
anacron與/etc/anacrontab