天天看點

crontab-at

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,如需轉載請自行聯系原作者

繼續閱讀