1. 程式人生 > >Linux 任務計劃 crontab

Linux 任務計劃 crontab

Linux 任務計劃、週期性任務執行

    在未來的某時間點執行一次任務:at,batch     週期性執行某任務:cron          電子郵件服務:         smtp:simple mail transmission protocol 簡單郵件傳輸協議         pop3:Post Office Protocol                  mailx:send and receive Internet mail             MUA:Mail User Agent             mailx [-s 'SUBJECT'] username[@hostname]                 郵件正文的生成:                     直接給出,Ctrl+d提交                     輸入重定向                         mail -s “SUBJECT” root < mail.txt                     通過管道                         echo "How are you?" | mail root             可以通過輸入郵件前面的編號來檢視郵件             鍵入q為退出     at命令:         at [OPTIONS] TIME         TIME:             HH:MM[YYYY:mm:dd]             noon,midnight,teatime             tomorrow             now+#{minutes,hours,days,weeks}         常用選項:             -q:QUEUE;                 at -q a             -l:列出指定佇列中等待執行的作業;相當於atq             -d:刪除指定的作業;相當於atrm             -c:檢視具體作業任務;             -f /path/from/somefile:從指定的檔案中讀取任務;         Note:作業的執行結果以郵件通知給相關使用者;     batch命令:         讓系統自行選擇空閒時間去執行此處指定的任務;          週期性任務計劃:         cron命令:             相關的程式包:                 cronie:主程式包,提供了crond守護程序及相關輔助工具;                 cronie-anacron:cronie的補充程式,用於監控cronie的任務執行情況,如cronie中的任務在過去該執行的時間點未能正常執行,則anacron會隨後啟動一次該任務;                 crontabs:包含centos提供系統維護任務;             確保crond守護程序處於執行狀態:                 centos7:systemctl status crond                     ……running……                 centos6:service crond status         計劃要週期性執行的任務提交給crond,由其來實現到點執行;         系統cron任務:             編輯/etc/crontab檔案         使用者cron任務:             使用crontab命令         [

[email protected] ~]# cat /etc/crontab         SHELL=/bin/bash         PATH=/sbin:/bin:/usr/sbin:/usr/bin         MAILTO=root                  # For details see man 4 crontabs                  # 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         例如晚上9點10分執行echo命令:         10 21 * * * root /bin/echo "hello"             時間表示法:                 特定值:給定時間點有效取值範圍內的值;                 *:給定時間點上有效取值範圍內的所有值;                     表示為”每……“                 離散取值:用","隔開                     #,#,#,…                 連續取值:使用"-"連結                     #-#                 在指定時間範圍上,定義步長:                     /#:#即為步長             例如:每3小時執行echo命令                 */3 * * * * root /bin/echo "hello"         使用者cron:             crontab命令定義,每個使用者都有專用的cron任務檔案:/var/spool/cron/USERNAME             crontab命令:                 crontab [-u user] [-l|-r|-i|-e]                     -l:列出所有任務;                     -r:移除所有任務;                     -i:同-r一同使用,以互動式模式讓使用者有選擇地移除指定任務;                     -e:編輯任務;                     -u user:僅root可用,替代指定使用者管理cron任務;         Note:執行結果以郵件通知給相關使用者;             COMMAND > /dev/null             COMMAND &> /dev/null             對於cron任務來講,%有特殊用途,如果在命令中要使用%,則需要轉義;不過,如果把%放置於單引號中,也可以不用轉義;         思考:             如何在秒級別週期執行任務?             * * * * * for min in 0 1 2 ; do echo "hello" ; sleep 20 ; done             如何實現每7分鐘執行一次任務?                 sleep命令:                     sleep NUMBER [SUFFIX] …                         SUFFIX:                                 s:秒,預設;                                 m:分                                 h:小時                                 d:天                                      

注:根據馬哥視訊做的學習筆記,如有錯誤,歡迎指正;侵刪