Ubuntu cron 定時(shí)執(zhí)行任務(wù)

關(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容