Linux下計劃任務和週期性任務設定

Linux任務計劃、週期性任務執行 將來的某時間點執行某任務:at,batch 週期性運行某任務:crontab 執行結果,會經過郵件發送給用戶 若是一下2條命令能夠看到25端口,則代表郵件服務可用 ~]# netstat -tnlp ~]# ss -tnl 本地電子郵件按服務: smtp:simple mail transmission protocol 發郵件 pop3:Post Office Procotol 收郵件 imap4:Internet Mail Access Procotol 收郵件 mail命令: mailx - send and receive Internet mail MUA:Mail User Agent,用戶收發郵件的工具程序:如outlook,foxmail mailx [-s 'SUBJECT'] username[@username] 郵件正文的生成: (1)交互式輸入:.單獨成行能夠表示正文結束;Ctrl+d提交也能夠 (2)經過輸入重定向: (3)經過管道: at命令: at [OPTION]...time TIME: HH:MM noon,midnignt,teatime(下午4點) tomorrow now+# UNIT:minutes,hours,days,OR weeks at的做業有隊列,用單個字母表示,默認都使用a隊列 經常使用選項: -l:查看做業隊列,至關於atq -f /PATH/FROM/SOMEFILE:從指定文件中讀取做業任務,不用交互式輸入 -d 做業號:刪除做業,至關於atrm -c:查看指定做業的具體內容 -q QUEUE:指名隊列 注意:做業執行結果是以郵件發送給提交做業的用戶 batch命令: batch會讓系統自行選擇在系統資源較空閒的時間去執行制定的任務 週期性任務計劃:cron 服務程序: cronie:主程序包,提供了crond守護進程及相關輔助工具 確保crond守護進程(daemon)處於運行狀態 CentOS 7: systemctl status crond.service Active:active(running).... CentOS 6: service crond status ... is running 向cron提交做業的方式不一樣於at,它須要使用專用的配置文件,此文件有固定格式,不建議使用文本編輯器直接編輯此文件,要使用crontab命令 cron任務分爲兩類: 系統cron任務:主要用於實現系統自身的維護 手動編輯:/etc/crontab 用戶cron任務: 命令:crontab 系統cron的配置格式:/etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO="" # 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 注意: (1)每一行定義一個週期性任務,共7個字段 *  *  *  *  * :定義週期性時間 user-name:運行任務的用戶身份 command to be executed:任務 (2)此處的環境變量不一樣於用戶登陸後獲取的環境,所以,建議命令使用絕對路徑,或者自定義PATH環境變量 (3)執行結果郵件發送給MAILTO指定的用戶 用戶cron任務的配置格式:/var/spool/cron/USERNAME SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO="" # 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 # |  |  |  |  | # *  *  *  *  * command to be executed 注意: (1)每一行定義一個週期性任務,共6個字段 *  *  *  *  * :定義週期性時間 command to be executed:任務 (2)此處的環境變量不一樣於用戶登陸後獲取的環境,所以,建議命令使用絕對路徑,或者自定義PATH環境變量 (3)執行結果郵件發送當前用戶 時間表示法: (1)特定值: 給定時間點有效取值範圍內的值: 注意:day of week和day of month通常不一樣時使用 (2)* 給定時間點上有效取值範圍內的全部值:表示「每...」 (3)離散取值 在時間點上使用逗號分隔的多個值 #,#,# (4)連續取值 在時間點上使用-鏈接開頭的結束 #-# (5)在指定時間點上,定義步長 /#:#即步長 注意: (1)指定的時間不能被步長整除是,其意義將不復存在 (2)最小時間單位爲「分鐘」,想完成「秒」,須要額外借助於其它機制:定義成每分鐘任務:而在利用腳本實如今每分鐘以內,循環執行屢次 示例: (1)3 * * * *:每小時執行;每小時的第3分鐘 (2)3 4 * * 5:每週執行一次,每週5的4點3分 (3)3 6 7 * *:每個月執行一次,每個月的7號的6點5分 (4)7 8 9 10 *:每一年執行一次,每一年的10月9號8點7分 (5)9 8 * * 3,7:每週三和週日的8點9分 (6)0 8,20 * * 3,7:每週三和週日的8點和20點 (7)0 9-18 * * 1-5:工做時間內的每小時 (8)*/5 * * * *:每5分鐘執行一次某任務 crontab命令: crontab [-u user] [-l | -r | -e] [-i] -e:編輯任務 -l:列出全部任務 -r:移除全部任務;即刪除/var/spool/cron/USERNAME文件 -i:在使用-r選項移除全部任務時提示用戶確認 -u:root爲其它用戶指定cron任務 注意:運行結果以郵件通知給當前用戶,若是拒絕接收郵件 (1)COMMAND >/dev/null (2)COMMAND &>/dev/null 注意:定義COMMAND時,若是命令須要用到%,須要對其轉義;但放置於單引號中的%不用轉義亦可 思考: 某任務在指定的時間因關機未能執行,下次開機會不會自動執行? 不會! 練習: (1)每12小時備份一次/etc目錄至/backups目錄中,保存文件格式爲「etc/yyyy-mm-dd-hh.tar.xz"                 0 */12 * * * tar -Jcf /backups/etc-$(date +%Y-%m-%d-%H).tar.xz /home/sysfft/ (2)每週二、4、7備份/var/log/secure文件至/logs目錄中,文件名格式爲「secure-yyyymmdd"                 0 0 * * 2,4,7 cp /var/log/secure /logs/secure-$(date +%Y%m%d) (3)每兩個小時取出當前系統/proc/meminfo文件中以S或M開頭的行信息追加到/tmp/meminfo.txt文件中 0 */2 * * * grep ^[S,M] /proc/meminfo >> /tmp/meminfo.txt
相關文章
相關標籤/搜索