歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux基礎知識

Linux的自動執行程序cron和crontab

假如你有一些任務要定期執行,比如清理磁盤、刪除過期文件、發送郵件和提醒,這個時候可以用cron來幫你。

    首先是安裝,大多數發行版都預裝了,Gentoo下的cron有許多種實現,可以用emerge --search cron來查看,這裡用vixIE-cron,因為功能比較完整,命令語法也比較通用。

   

 # emerge vixIE-cron

    之後要啟動cron服務:

   

 # /etc/init.d/vixIE-cron start

    別忘了把cron加入到啟動腳本中:

   

 # rc-update add vixIE-cron default

    完成安裝。

    系統cron設定:/etc/crontab
    通過 /etc/crontab 文件,可以設定系統定期執行的任務,當然,要想編輯這個文件,得有root權限。

    讓我們打開 /etc/crontab,看看cron的語法:

   

 1   |  # for vixIE cron
2   |  #
3   |  # $Header: /var/cvsroot/gentoo-x86/sys-process/vixIE-cron/files/crontab-3.0.1-r4,v 1.1 2005/03/04 23:59:48 ciaranm Exp $
4   |  #
5   |  #
6   |
7   |  # Global variables
8   |  SHELL=/bin/bash
9   |  PATH=/sbin:/bin:/usr/sbin:/usr/bin
10  |  MAILTO=root
11  |  HOME=/
12  |
13  |  # check scripts in cron.hourly, cron.daily, cron.weekly and cron.monthly
14  |  0  *  * * *     root    rm -f /var/spool/cron/lastrun/cron.hourly
15  |  1  3  * * *     root    rm -f /var/spool/cron/lastrun/cron.daily
16  |  15 4  * * 6     root    rm -f /var/spool/cron/lastrun/cron.weekly
17  |  30 5  1 * *     root    rm -f /var/spool/cron/lastrun/cron.monthly
18  |  */10  *  * * *  root    test -x /usr/sbin/run-crons && /usr/sbin/run-crons
    以上是一個默認的/etc/crontab文件,7~11行設定了執行任務時特定環境變量的值,MAILTO=root 指出出錯信息發給root。

    真正描述執行的任務在14~18行,每行代表了一個定期執行的任務,從前到後,分為3部分:

    第一部分,一堆奇怪的數字和星號,這部分描述任務的執行周期和時間,後面我們將詳細解釋。

    第二部分,上面的文件全部是"root",描述了執行任務時的用戶。

    第三部分,為需要執行的完整命令。

    第一部分分為5個小部分,沒部分可以是數字或者星號,分別代表了分鐘、小時、日期、月份、周,讓我們來看一個例子:

   

 0   7   *    *   *    root    mpg123 ~/wakeup.mp3
分 時 日 月 周
    星號,即代表不限制,上面的例子就是:每天的7點0分,都將執行mpg123 ~/wakeup.mp3,放首歌,把自己從睡夢中叫醒~

    以下是各部分的取之范圍:

   

 分鐘 0~59  小時 0~23  日期 1~31  月份 1~12 0~6

 

    其中周的范圍0~6,0代表星期天,1~6代表周一~周六。

    讓我們來看更多的例子:

   

 0  4  * * 0     root    emerge --sync && emerge -uD world              #每周日凌晨4點,更新系統
0  2  1 * *     root    rm -f /tmp/*                                                    #每月1號凌晨2點,清理/tmp下的文件
0  8  6  5 *   root     mail  robin < /home/galeki/happy.txt             #每年5月6日給robin發信祝他生日快樂
    假如,我想每隔2分鐘就要執行某個命令,或者我想在每天的6點、12點、18點執行命令,諸如此類的周期,可以通過 “ / ” 和 “ , ” 來設置:

   

 */2   *   *   *   *           root      ...............      #每兩分鐘就執行........
0  6,12,18   *   *   *    root      ...............      #每天6點、12點、18點執行........

 

用戶的cron:crontab命令
    上面我們提到的 /etc/crontab 文件,只能指定系統定期執行的命令,如果用戶想設定自己定期需要執行的命令的話,就要用到crontab命令,編輯自己的crontab文件。

    首先,用戶必須隸屬於cron組才可以用crontab命令,可以用下面的命令把用戶加入到cron組中:

   

 # gpasswd -a galeki cron    crontab命令主要有3個參數:

    -e :編輯用戶的crontab。

    -l  :列出用戶的crontab的內容。

    -r  :刪除用戶的crontab的內容。

    執行crontab -e,將自動打開編輯器,你可以編輯自己的crontab文件,語法和 /etc/crontab 文件一樣,不同的只是,不必再指出執行的用戶,編輯後保存即可。

    crontab -l用來查看自己的crontab文件內能,crontab -r刪除自己的crontab。

Copyright © Linux教程網 All Rights Reserved