cron是乙個linux下的定時執行工具,可以在無需人工干預的情況下執行作業。由於cron 是linux的內建服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:
/sbin/service crond start //啟動服務/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
你也可以將這個服務在系統啟動的時候自動啟動:
在/etc/rc.d/rc.local這個指令碼的末尾加上:
/sbin/service crond start
crontab 命令
crontab file [-u user] //用指定的檔案替代目前的crontab。
crontab -u[user] //指定要設定計時器的使用者名稱.
crontab -l[user] //列出該使用者的計時器設定
crontab -e[user] //編輯該使用者的計時器設定
crontab -r[user] //刪除該使用者的計時器設定。
crontab -c dir //指定crontab的目錄。
如:root檢視自己的cron設定:crontab -u root -l
root刪除fred的cron設定:crontab -u fred -r
第乙個命令列中,file是命令檔案的名字。如果在命令列中指定了這個檔案,那麼執行crontab命令,則將這個檔案拷貝到crontabs目錄下;如果在命令列中沒有制定這個檔案,crontab命令將接受標準輸入(鍵盤)上鍵入的命令,並將他們也存放在crontab目錄下。
命令列中-r選項的作用是從/var/spool/cron/crontabs目錄下刪除使用者定義的檔案crontab;
crontab檔案的格式:m h d m d cmd.
m: 分鐘(0-59)。h:小時(0-23)。
d:天(1-31)。
m: 月(1-12)。
d: 一星期內的天(0~6,0 表示星期天)
除了數字還有幾個個特殊的符號就是"*"、"/"和"-"、",",*代表所有的取值範圍內的數字,"/"代表每的意思,"*/5"表示每5個單位,"-"代表從某個數字到某個數字,","分開幾個離散的數字。
例子:
#每天早上6點106* * * date
#每兩個小時
0*/2* * * date
#晚上11點到早上8點之間每兩個小時,早上部點
023-7/2,8* * * date
#每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點011
4* mon-wed date
#1月份日早上4點04
1 jan* date
3041 * * 6,0 /bin/find -name "
core
" -exec rm {} ;
//每週
六、週日的1:10執行乙個find命令。
0,30
每次編輯完某個使用者的cron設定後,cron自動在/var/spool/cron下生成乙個與此使用者同名的檔案,此使用者的cron資訊都記錄在這 個檔案中,這個檔案是不可以直接編輯的,只可以用crontab -e 來編輯。cron啟動後每過乙份鐘讀一次這個檔案,檢查是否要執行裡面的命令。因此此檔案修改後不需要重新啟動cron服務。
在/etc目錄下有乙個crontab檔案,這裡存放有系統執行的一些排程程式(還有cron.d/ cron.deny cron.monthly/ cron.weekly/ cron.daily/ cron.hourly/ crontab)。
作業與它們預定的時間儲存在檔案/var/spool/cron/crontabs/username裡。username使使用者名稱,在相應的檔案中存放著該使用者所要執行的命令。
/usr/lib/cron/cron.allow表示誰能使用crontab命令
a)如果它是乙個空檔案表明沒有乙個使用者能安排作業。
b)如果這個檔案不存在,而有另外乙個檔案/usr/lib/cron/cron.deny,則只有不包括在這個檔案中的使用者才可以使用crontab命令。
c)如果它是乙個空檔案表明任何使用者都可安排作業。兩個檔案同時存在時cron.allow優先,如果都不存在,只有超級使用者可以安排作業。
例1:以linux下定時備份mysql為例說明下
寫乙個簡單的mysql備份shell指令碼
vi#!/bin/sh
da=`date +%y%m%d%h%m%s`
mysqldump -u root -pdongjj --all-database>/root/mysqlbakup/$da
儲存為 mysqlbak.sh
然後 crontab-e 0 3 * * * /root/mysqlbak.sh
儲存退出
例2:讓乙個指令碼自動定時執行
[root@test1 init.d]# crontab -e
在root檔案後面新增一行(含義:每月的18日4:40分執行scott_select.sh)
40418 * * /oracle_backup/bin/scott_select.sh00
23 * * /patch to tranferfiles.sh >;
tranferfiles.log
設定完了之後不要忘了,啟動定時服務(大多數忘了這裡)
[root@test1 init.d]# service crond stop[root@test1 init.d]# service crond start
或者
/etc/init.d/crontab start
linux crontab 定時任務
通過crontab 命令,我們可以在固定的間隔時間執行指定的系統指令或 shell script指令碼。時間間隔的單位可以是分鐘 小時 日 月 周及以上的任意組合。這個命令非常適合週期性的日誌分析或資料備份等工作。命令格式 crontab e l 例如 每隔15分鐘 0,15,30,45 bin e...
Linux Crontab 定時任務
crontab檔案 bash vat command not found hadoop master1 etc cat crontab shell bin bash path sbin bin usr sbin usr bin mailto root home for details see man...
Linux Crontab 定時任務
一 crontab介紹 crontab命令的功能是在一定的時間間隔排程一些命令的執行。1.1 etc crontab檔案 在 etc目錄下有乙個crontab檔案,這裡存放有系統執行的一些排程程式。每個使用者可以建立自己的排程crontab 在 var spool cron目錄下 以下是我本機上的c...