定期執行任務

   在Linux中經常需要我們去執行配置文件的讀取、日誌文件的保存等定期執行的任務。可以通過一些配置讓系統自動執行這些任務。

   定期任務執行:

1、在未來的某個時間僅執行一次

   # at

   # batch

at  and batch read commands from standard input or a specified file which are to be executed at a later time .

   其時間表示法:

   HH:MM [AM|PM]

   MM/DD/YY

 

   at now+#

         miniutes

         hours

         days

         weeks

  例:# at now+10min 

  可以輸入 Ctrl+d 來提交at任務

   at -l = atq  查看列表

   at -r job_num = atrm job_num 清除任務

   這些任務的執行輸出一般都通過mail方式發給當前用戶:

     # mail 

        Mail version 8.1 6/6/93.  Type ? for help.

"/var/spool/mail/root": 2 messages 1 new 2 unread

 U  1 [email protected]  Sun Feb 26 17:47  46/1685  "Logwatch for localhost.localdomain (Linux)"

>N  2 [email protected]  Sun Feb 26 18:47  16/696   "Output from your job        2"

  輸入數字可以查看mail

  q鍵退出

 

   at -f file TIME  從某一文件中讀取

 

   batch不需要加時間,用法和at一樣  

 

 

2、在未來週期性去執行一個任務:

   crontab

   anacron

 

 

crond    屬於服務,在後臺一直運行。其環境變量與用戶不同。

chkconfig --list    查看服務列表

which crond         查看crond根路徑

rpm -qf /usr/sbin/crond  查看crond的安裝包

service crond status     查看crond的狀態

 

定義環境變量:

PATH=/sbin:/bin:/usr/sbin:/usr/bin

 

 /var/spool/cron/USERNAME   用戶定義的任務計劃

 /etc/crontab              系統定義的任務計劃

兩類:

1、用戶cron    /var/spool/cron/USERNAME  不需要指定用戶  配置文件有六個字段

 

2、系統cron    /etc/crontab           需要指定用戶   配置文件有七個字段

#vim /etc/crontab

   SHELL=/bin/bash     

   PATH=/sbin:/bin:/usr/sbin:/usr/bin

   MAILTO=root  

   HOME=/

 

   # run-parts

   01 * * * * root run-parts /etc/cron.hourly

   02 4 * * * root run-parts /etc/cron.daily

   22 4 * * 0 root run-parts /etc/cron.weekly

   42 4 1 * * root run-parts /etc/cron.monthly

 

時間:

min:01-59

hour:00-23

day: 01-31

month: 01-12

day of week: 00-07

 

4 7 * * *   每天的七點四分    每天任務

10 * * * *  每十分鐘          每小時任務

10 2 3 * *  每月三號兩點十分  每月任務

30 4 * * 6  每週六四點三十分  每週任務

 

非連續時間點:,

15,45 * * * *              每半小時任務

連續時間點:-

15 8-18 * * *              每小時任務

 

*/#  

*/3 * * * *   每三分鐘執行一次

00-59/3 * * * * 每三分鐘執行一次

 

 

crontab  

# crontab -e 編輯crontab文件

*/3 * * * * /bin/echo "hello"

# crontab -l 列出crontab文件

# crontab -r 移除crontab文件

# crontab -u USERMANE 編輯特定用戶的crontab文件

 

*/2 * * * * /sbin/enableppp &> /dev/null

40 21 * * * /sbin/shutdown -h now &> /dev/null

10 3 * * * /bin/tar -jcf /baskup/etc-`date +%F`.tar.bz2 /etc

 

anacron: 實現檢查過期和未完成的crontab的任務

# vim /etc/anacrontab

   # /etc/anacrontab: configuration file for anacron

 

   # See anacron(8) and anacrontab(5) for details.

 

   SHELL=/bin/sh

   PATH=/sbin:/bin:/usr/sbin:/usr/bin

   MAILTO=root

 

   1       65      cron.daily              run-parts /etc/cron.daily

   7       70      cron.weekly             run-parts /etc/cron.weekly

   30      75      cron.monthly            run-parts /etc/cron.monthly

 

注:date   系統時間

clock  硬件時間

 

hwclock -w 將date寫入clock

        -s 將clock寫入date

  # crontab -e

   */3 * * * * /sbin/hwclock -s &> /dev/null

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章