如何在Linux上創(chuàng)建和管理計(jì)劃任務(wù)?
譯文【51CTO.com快譯】cron是Linux最有用的工具之一,也是開發(fā)人員的寵兒,因?yàn)樗屇憧梢允褂猛ㄓ媚_本和針對(duì)特定任務(wù)的腳本在指定的時(shí)段、日期和間隔時(shí)間運(yùn)行自動(dòng)命令。你可以想象系統(tǒng)管理員如何用它來自動(dòng)執(zhí)行備份任務(wù)、目錄清理和通知等。
計(jì)劃任務(wù)(cron job)在后臺(tái)運(yùn)行,不斷檢查/etc/crontab文件以及/etc/cron.*/和/var/spool/cron/目錄。cron文件不該直接編輯,每個(gè)用戶都有獨(dú)特的crontab。
那么你應(yīng)該如何創(chuàng)建和編輯計(jì)劃任務(wù)?借助crontab命令。crontab是用于創(chuàng)建、編輯、安裝、卸載和列出計(jì)劃任務(wù)的方法。
用于創(chuàng)建和編輯計(jì)劃任務(wù)的命令一樣且很簡(jiǎn)單。更棒的是,創(chuàng)建新文件或編輯現(xiàn)有文件后,無需重新啟動(dòng)cron。
- $ crontab -e
cron語法
就像使用任何語言一樣,如果你理解其語法,使用cron容易得多;你應(yīng)該知道2種格式:
A B C D E USERNAME /path/to/command arg1 arg2
或者
A B C D E USERNAME /root/backup.sh
解釋一下上述的cron語法:
- A:分鐘范圍:0 - 59
- B:小時(shí)范圍:0 - 23
- C:天數(shù)范圍:0 - 31
- D:月份范圍:0-12
- E:每星期天數(shù)范圍:0 – 7。星期一開始,0或7表示星期日。
- USERNAME:將這個(gè)換成你的用戶名。
- /path/to/command:你想要安排運(yùn)行的腳本或命令的名稱。
那不是全部。cron使用3個(gè)運(yùn)算符符號(hào),以便你在字段中指定多個(gè)值:
- 星號(hào)(*):指定字段的所有可能值。
- 逗號(hào)(,):指定值列表。
- 連號(hào)(- ):指定一系列值。
- 分隔符(/):指定步長(zhǎng)值。
你已了解了cron的語法和運(yùn)算符,不妨看幾個(gè)計(jì)劃任務(wù)例子。
計(jì)劃任務(wù)例子
運(yùn)行cron命令的***步是用以下命令安裝crontab:
- # crontab -e
每天凌晨3點(diǎn)運(yùn)行/root/backup.sh:
- 0 3 * * * /root/backup.sh
在每個(gè)月的第二天下午4:30運(yùn)行script.sh:
- 30 16 2 * * /path/to/script.sh
在每周晚上10點(diǎn)運(yùn)行/scripts/phpscript.php:
- 0 22 * * 1-5 /scripts/phpscript.php
每天凌晨0點(diǎn)23分、2點(diǎn)和4點(diǎn)運(yùn)行perlscript.pl:
- 23 0-23/2 * * * /path/to/perlscript.pl
每星期日04:05運(yùn)行Linux命令:
- 5 4 * * sun /path/to/linuxcommand
計(jì)劃任務(wù)選項(xiàng)
列出計(jì)劃任務(wù)。
- # crontab -l
或者
- # crontab -u username -l
刪除所有crontab任務(wù)。
- #crontab -r
刪除某個(gè)特定用戶的計(jì)劃任務(wù)。
- # crontab -r -u username
Crontab中的字符串
字符串是開發(fā)人員最喜歡的東西之一,因?yàn)樗鼈兛梢韵貜?fù)編寫,有助于節(jié)省時(shí)間。 cron有特定的字符串,可用于更快地創(chuàng)建命令:
@hourly:每小時(shí)運(yùn)行一次,即“0 * * * *”
@midnight:每天運(yùn)行一次,即“0 0 * * *”
@daily:與子夜一樣
@weekly:每周運(yùn)行一次,即“0 0 * * 0”
@monthly:每月運(yùn)行一次,即“0 0 1 * *”
@annually:每年運(yùn)行一次,即“0 0 1 1 *”
@yearly:與@annually一樣
@reboot:每次啟動(dòng)時(shí)運(yùn)行一次
比如說,這是每天備份系統(tǒng)的方法:
@daily /path/to/backup/script.sh
此時(shí),你已學(xué)會(huì)了使用計(jì)劃任務(wù)來創(chuàng)建和管理系統(tǒng)任務(wù)所需的一切?,F(xiàn)在你可以開始使用預(yù)定的命令,設(shè)置和維護(hù)多個(gè)環(huán)境。
原文標(biāo)題:How to Create and Manage Cron Jobs on Linux,作者:Martins D. Okoi
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】