Linux系统任务计划(at、crontab)的使用方法
Linux系統(tǒng)任務計劃(at、crontab)的使用方法
?
Linux上的任務計劃:
????????
???????? 任務計劃:
?????????????????? 在未來時間點一次性執(zhí)行某任務:at, batch
?????????????????? 周期性執(zhí)行某任務:crontab
?
???????? 電子郵件服務:
?????????????????? smtp:simple mail transmission protocol
??????????????????????????? /var/spool/mail/USERNAME? 郵件目錄
?
?????????????????? pop3:post office protocol?? pop彈出 ,從服務器上下載郵件
?????????????????? imap4:internet mail access protocol? 類似POP3,功能更強
?
?????????????????? MUA:mail命令
?
?????????????????? mail命令:
?
??????????????????????????? mail:進入交互式收發(fā)郵件接口
???????發(fā)送郵件,手動輸入郵件內容
??????????????????????????? mail-s 'SUBJECT' username@hostname
?????????????????? 管道的方式附上郵件的內容
??????????????????????????? mail-s 'SUBJECT' username@hostname < /PATH/FROM/SOMEFILE
?????????????????? 命令執(zhí)行結果作為郵件內容
??????????????????????????? COMMAND| mail -s 'SUBJECT' username@hostname
?
???????? at命令:
?
?????????????????? 承載未來時間運行的某作業(yè):
?
?????????????????? 支持使用作業(yè)隊列:
??????????????????????????? 默認為a隊列;
?
?????????????????? Ctrl+d? 結束命令的輸入
?
?????????????????? at[option]... TIME
?
?????????????????? TIME:
??????????????????????????? (1)絕對時間
???????????????????????????????????? HH:MM,
???????????????????????????????????? MMDD[CC]YY,MM/DD/[CC]YY, DD.MM.[CC]YY or [CC]YY-MM-DD
???????????????????????????????????? tomorrow
??????????????????????????? (2)相對時間
???????????????????????????????????? now+#UNIT
?????????????????????????????????????????????? minute,hour, day, week
??????????????????????????? (3)模糊時間
???????????????????????????????????? midnight
???????????????????????????????????? noon
???????????????????????????????????? teatime
?
?????????????????? 常用選項:
??????????????????????????? -qQUEUE: at作業(yè)隊列;
??????????????????????????? -f/PATH/FROM/SOMEFILE:從指定的文件中讀取要運行的作業(yè);
??????????????????????????? -l:查看作業(yè)隊列中的等運行作業(yè)列表;相當于使用atq命令;
??????????????????????????? -cAT_JOB_NUM: 查看待運行作業(yè)的內容;
??????????????????????????? -d:刪除指定作業(yè);相當于atrm
?
???????? batch:
?????????????????? 與at不同的是batch無法指定時間,由系統(tǒng)自行選擇在資源較為空閑時運行指定的任務;
?
???????? crontab:周期性任務計劃
?????????????????? 守護進程:crond
?
?????????????????? 周期性任務有兩類:
??????????????????????????? (1)系統(tǒng)cron任務;沒有默認運行用戶身份,所以需要額外指定運行者;
???????????????????????????????????? /etc/crontab
?
???????????????????????????????????? vim命令
?
? ? ? ? ? #Example of job definition:
? ? ? ? ? #.---------------- minute (0 - 59)
? ? ? ? ? #|? .------------- hour (0 - 23)
? ? ? ? ? #|? |?.---------- day of month (1 - 31)
? ? ? ? ? #|? |?|? .------- month (1 - 12) ORjan,feb,mar,apr ...
? ? ? ? ? #|? |?|? |? .---- day of week(0-6) (Sunday=0 or 7) ORsun,mon,tue,wed,thu,fri,sat
? ? ? ? ? #|? |?|? |? |
? ? ? ? ? #*? *?*? *? * user-name?command to be executed????
?
? ? ? ? ? ? ? ? ? ? ?7個字段:
? ? ? ? ? ? ? ? ? ? ?前5個字段:時間點
? ? ? ? ? ? ? ? ? ? ? user-name:以哪個用戶的身份運行任務
? ? ? ? ? ? ? ? ? ? ? ? commandto be executed: 要運行任務???????????????????????????
?
??????????????????????????? (2)用戶cron任務:由某個用戶所提交,默認就以提交者的身份運行,所以無需額外指定運行者;
???????????????????????????????????? /var/spool/cron/USERNAME
???????鑒于crontab文件中的任務的保密性,比如管理給用戶指定的任務,不建議直接使用VIM編輯crontab文件來編輯任務,建議使用crontab命令來管理任務
???????????????????????????????????? vim命令;不建議
???????????????????????????????????? crontab命令:建議
?
? ? ? ? #Example of job definition:
? ? ? ? #.---------------- minute (0 - 59)
? ? ? ? #|? .------------- hour (0 - 23)
? ? ? ? #|? |?.---------- day of month (1 - 31)
? ? ? ? #|? |?|? .------- month (1 - 12) ORjan,feb,mar,apr ...
? ? ? ? #|? |?|? |? .---- day of week (0 - 6) (Sunday=0 or 7) ORsun,mon,tue,wed,thu,fri,sat
? ? ? ? #|? |?| ?|? |
? ? ? ? #*? *?*? *? *?command to be executed??????
?
? ? ? ? ? ? ? ? 5個時間點:
? ? ? ? ? ? ? ??分鐘:有效取值范圍0-59;
? ? ? ? ? ? ? ??小時:0-23
? ? ? ? ? ? ? ??日:1-31
? ? ? ? ? ? ? ??月:1-12
? ? ? ? ? ? ? ??周幾:0-7
?
? ? ? ? ? ? ? ? ?注意:幾月幾號與周幾,不建議同時使用;
?
? ? ? ? ? ? ? ? ?例如:
? ? ? ? ? ? ? ? ? ? ? 6* * * *? 表示每小時的第6分鐘執(zhí)行一次
?
?
? ? ? ? ? ? ? ? ?時間表示法:
?
? ? ? ? ? ? ? ? ? ?*:對應時間點有效取值范圍內的每個時間點;
? ? ? ? ? ? ? ? ? ?-:一個特定連續(xù)時間范圍, 3-7
? ? ? ? ? ? ? ? ? ? ,:一個離散的時間點,3,5,7
? ? ? ? ? ? ? ? ? ?/#:有效時間范圍內的每多少時間;用于指定頻率;
? ? ? ? ? ? ? ? ? ? 1-30/4,*/4
?
? ? ? ? ? ? ? ? ? ? 5*/3 * * * /bin/echo "howdy"? 每隔3個小時的第6分鐘執(zhí)行一次
?
? ? ? ? ? ? ? ? ? ? 57 * * 1-5 /bin/echo "howdy"?? 每周一到周五的7點5分執(zhí)行
?
? ? ? ? ? ? ? ? ? crontab命令:
? ? ? ? ? ? ? ? ? ? ? ? ?crontab[-u user] [-l | -r | -e]
? ? ? ? ? ? ? ? ? ? ? ? ?-uuser: 不是管理自己的cron任務,而是指定的目標用戶的cron任務;僅root擁有管理其它用戶的cron任務的權限;默認管理自己的;
?
? ? ? ? ? ? ? ? ? ? ? ? ?-l:list,列出任務;
? ? ? ? ? ? ? ? ? ? ? ? ?-r:remove, 移除所有任務;
? ? ? ? ? ? ? ? ? ? ? ? ?-e:edit,編輯,打開一當前shell會話的默認編輯器來編輯cron任務表;
?
?
? ? ? ? ? ? ? ? ? ? ? ??思考:
? ? ? ? ? ? ? ? ? ? ?1、如果想實現(xiàn)每8分鐘運行一次某任務?
????????????????????? */8 * * * *
? ? ? ? ? ? ? ? ? ? ?2、如果想實現(xiàn)每10秒鐘運行一次某任務?
? ? ? ? ? ? ? ? ? ? * * * * * for i in {0..4}; do /bin/echo “hello!”; sleep 10 ; done
??????????????????????
? ? ? ? ??補充性的工具:anacron:
?
? ? ? ? ? ? ? ? ?注意:
? ? ? ? ? ? ? ? ? (1)如果不想接收任務執(zhí)行結果的通知郵件:
? ? ? ? ? ? ? ? ? ? ? ? COMMAND> /dev/null
? ? ? ? ? ? ? ? ? ? ? ? COMMAND&> /dev/null
? ? ? ? ? ? ? ? ? (2)對于crontab文件來講,%有特殊功用;如果命令中會出現(xiàn)%, 要記得轉義,或者用單引號對其引用;
? ? ? ? ? ? ? ? ? (3)crontab的PATH變量與用戶的變量不完全相同,所以,建議在cron中的任務要使用絕對路徑
? ? ? ? ? ? ? ? ? ? /root/bin/a.sh
?
?????? 1、每周一到周六的凌晨3點20分,運行cp命令對/etc/目錄進行歸檔另存,存儲位置為/backups/etc-YYYY-MM-DD;
????? 203 * * 1-6 /bin/cp –a /etc /backups/etc-`date +\%F`
?????? 2、每周日凌晨2點30分,運行cp命令對/etc/fstab文件進行備份,存儲位置為/backup/fstab-YYYY-MM-DD-hh-mm-ss;
?????? 302 * * 7 /bin/cp ?/etc/fstab/backup/fstab-`date +’%F-%H-%M-%S’`
?????? 3、每天晚上12點,取得/proc/meminfo文件中所有以S或M開頭的行,追加至/statistics/meminfo.txt文件中,且每天的消息之前,要加上類似===============分隔線
??????0 0 * * * /bin/echo ===== >> /tmp/meminfo.txt ; /bin/egrep "^[S|M]"/proc/meminfo >> /tmp/meminfo.txt
轉載于:https://blog.51cto.com/hubla/1692583
總結
以上是生活随笔為你收集整理的Linux系统任务计划(at、crontab)的使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用android LinearLayou
- 下一篇: spring mvc+junit