linux任務計劃,周期性的任務執行
未來的某個時間點執行一次任務:at,batch
周期性的運作某個任務:cron
電子郵件服務:
smtp:simple mail transmission protocol,用于傳輸郵件:
pop3:post office protocol
imap4:Internet mail access protocol
mailx -send and receive internetl mail
mailx -s "hi" root
at指令
at 17:10
輸入要定時執行的指令後輸入ctrl+d完成
time
HH:MM
noon,midnight,teatime
tomorrow
now+#{minutes,hours,days,OR weeks}
at now+3minutes
at -l或者atq等待運作的作業
at -d 1删除作業
atrm 1删除作業
at -c 1具體的作業任務
-f /path/from/somefile.指定檔案中讀取任務
batch指令
讓系統自動選擇空閑時間去執行指定的任務;
周期性任務計劃:
相關程式包:
cronie:主程式,提供crod程序及相關輔助工具
cronie-anacron:用于監控任務執行狀況:如果任務沒有在指定的時間點運作,則anacron會在随後啟動一次此任務
crontabs:包含了Centos提供系統維護任務;
確定crond已經啟動
centos7:systemctl status crond
centos6:service crond status
計劃要周期性執行的任務需要送出給crond,由其來實作到點運作。
系統cron任務:
/etc/crontab
使用者cron任務:
crontab指令
# 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 "hi"
時間表示法:
(1)特定值:
給定時間點有效範圍内的值;
(2)*
給定時間點上有效取值範圍内的所有值;
表示“每。。。”
(3)離散取值:,
#,#,#
(4)連續取值:-
#-#
(5)在指定時間範圍上,定義步長:
/#:#為步長
*/3
沒3小時echo指令
0 */3 * * * root /bin/echo "hi"
使用者cron:
crontab指令定義,每個使用者都有專用的cron任務檔案:/var/spool/cron/username
crontab -e 編輯任務
crontab -l 列出任務
crontab -r 移除所有任務
crontab -i 互動式模式讓使用者有選擇的移除任務
crontab -u user :僅root可以運作,代為為指定使用者管理cron任務
crontab -u oracel -e
加任務:
crontab -e
0 */1 * * * command
0 */2 * * * command
查詢任務是否加了:
crontab -l
0 */2 * * * command
基本格式 :
* * * * * command
分 時 日 月 周 指令
第1清單示分鐘1~59 每分鐘用*或者 */1表示
第2清單示小時1~23(0表示0點)
第3清單示日期1~31
第4清單示月份1~12
第5列辨別号星期0~6(0表示星期天)
第6列要運作的指令
crontab檔案的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重新開機apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重新開機apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重新開機apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之間每隔30分鐘重新開機apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重新開機apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重新開機apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11點到早上7點之間,每隔一小時重新開機apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号與每周一到周三的11點重新開機apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4點重新開機apache
本文轉自阿倫艾弗森 51CTO部落格,原文連結:http://blog.51cto.com/perper/1953397,如需轉載請自行聯系原作者