歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux基礎知識 >> Linux的自動執行程序cron和crontab

Linux的自動執行程序cron和crontab

日期:2017/4/19 14:19:41   编辑:Linux基礎知識
假如你有一些任務要定期執行,比如清理磁盤、刪除過期文件、發送郵件和提醒,這個時候可以用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