關(guān)于crontab
cron是一個(gè)Linux定時(shí)執(zhí)行工具,可以在無需人工干預(yù)的情況下運(yùn)行作業(yè)。在Ubuntu server 下,cron是被默認(rèn)安裝并啟動(dòng)的。通過/etc/crontab文件,可以看到以下內(nèi)容:

ununtu 通過調(diào)用 run-parts 命令,定時(shí)運(yùn)行四個(gè)目錄下的所有腳本。
1)/etc/cron.hourly,目錄下的腳本會(huì)每個(gè)小時(shí)讓執(zhí)行一次,在每小時(shí)的2分鐘時(shí)運(yùn)行;
2)/etc/cron.daily,目錄下的腳本會(huì)每天讓執(zhí)行一次,在每天0點(diǎn)17分時(shí)運(yùn)行;
3)/etc/cron.weekly,目錄下的腳本會(huì)每周讓執(zhí)行一次,在每周第七天的3點(diǎn)56分時(shí)運(yùn)行;
4)/etc/cron.mouthly,目錄下的腳本會(huì)每月讓執(zhí)行一次,在每月19號(hào)的5點(diǎn)32分時(shí)運(yùn)行;
當(dāng)然,以上的時(shí)間均是系統(tǒng)默認(rèn)時(shí)間,可以根據(jù)自己的需求進(jìn)行修改。
cron 服務(wù)的啟動(dòng)與停止
在Ubuntu 9.10下,cron是被默認(rèn)安裝并啟動(dòng)的。而 ubuntu 下啟動(dòng),停止與重啟cron,均是通過調(diào)用/etc/init.d/中的腳本進(jìn)行。命令如下:
1)service?cron?start??/*啟動(dòng)服務(wù)*/
2)service?cron?stop /*關(guān)閉服務(wù)*/
3)service cron restart /*重啟服務(wù)*/
4)service cron reload /*重新載入配置*/
可以通過以下命令查看cron是否在運(yùn)行(如果在運(yùn)行,則會(huì)返回一個(gè)進(jìn)程ID):
# pgrep cron

crontab命令
crontab 命令用于安裝、刪除或者列出用于驅(qū)動(dòng)cron后臺(tái)進(jìn)程的表格。也就是說,用戶把需要執(zhí)行的命令序列放到crontab文件中以獲得執(zhí)行,每個(gè)用戶都可以有自己的crontab文件。以下是這個(gè)命令的一些參數(shù)與說明:
1)crontab -u /*設(shè)定某個(gè)用戶的cron服務(wù)*/
2)crontab -l /*列出某個(gè)用戶cron服務(wù)的詳細(xì)內(nèi)容*/
3)crontab -r /*刪除某個(gè)用戶的cron服務(wù)*/
4)crontab -e /*編輯某個(gè)用戶的cron服務(wù)*/
參數(shù)名稱 含義 示例
-l 顯示用戶的Crontab文件的內(nèi)容 crontabl –l
-i 刪除用戶的Crontab文件前給提示 crontabl -ri
-r 從Crontab目錄中刪除用戶的Crontab文件 crontabl -r
-e 編輯用戶的Crontab文件 crontabl -e
/etc/crontab文件語法如下:
Minute Hour Day Month Dayofweek command
分鐘 小時(shí) 天 月 天每星期 命令
每個(gè)字段代表的含義及取值范圍如下:
Minute :分鐘(0-59),表示每個(gè)小時(shí)的第幾分鐘執(zhí)行該任務(wù)
Hour : 小時(shí)(1-23),表示每天的第幾個(gè)小時(shí)執(zhí)行該任務(wù)
Day : 日期(1-31),表示每月的第幾天執(zhí)行該任務(wù)
Month : 月份(1-12),表示每年的第幾個(gè)月執(zhí)行該任務(wù)
DayOfWeek : 星期(0-6,0代表星期天),表示每周的第幾天執(zhí)行該任務(wù)
Command : 指定要執(zhí)行的命令(如果要執(zhí)行的命令太多,可以把這些命令寫到一個(gè)腳本里面,然后在這里直接調(diào)用這個(gè)腳本就可以了,調(diào)用的時(shí)候記得寫出命令的完整路徑)
在這些字段里,除了“Command”是每次都必須指定的字段以外,其它字段皆為可選字段,可視需要決定。對(duì)于不指定的字段,要用“*”來填補(bǔ)其位置。同時(shí),cron支持類似正則表達(dá)式的書寫,支持如下幾個(gè)特殊符號(hào)定義:
“*” ,代表所有的取值范圍內(nèi)的數(shù)字;
“/” , 代表”每”(“*/5”,表示每5個(gè)單位);
“-” , 代表從某個(gè)數(shù)字到某個(gè)數(shù)字(“1-4”,表示1-4個(gè)單位);
“,” ,分開幾個(gè)離散的數(shù)字;
舉例如下:
5 * * * * ls /*指定每小時(shí)的第5分鐘執(zhí)行一次ls命令*/
30 5 * * * ls /*指定每天的 5:30 執(zhí)行l(wèi)s命令*/
30 7 8 * * ls /*指定每月8號(hào)的7:30分執(zhí)行l(wèi)s命令*/
50 7 * * * root run-parts /etc/cron.daily /*每天7:50以root 身份執(zhí)行/etc/cron.daily目錄中的所有可執(zhí)行文件*/
新增 cron 任務(wù)
1.執(zhí)行如下命令添加任務(wù)
# crontab -e
1)直接執(zhí)行命令行,比如每隔1分鐘執(zhí)行date命令并將結(jié)果保存至文件/tmp/testCron.txt中,cron 格式如下:
*/1 * * * * date >> /tmp/testCron.txt

2)執(zhí)行shell 腳本,比如每隔3分鐘執(zhí)行一次/var/backups/test.sh?文件,cron 格式如下:
*/3 * * * * /var/backups/test.sh
文件?/var/backups/test.sh 的內(nèi)容如下:
———————————————————————————————————————–
#!/bin/sh
cd?/var/backups/
Now=`date?‘+%Y%m%d’`
tar?-zcf?/var/backups/${Now}Website.tar.gz?/var/www/html/
———————————————————————————————————————–
2. 重啟cron 服務(wù)
# service cron restart
