該文章是自己在學(xué)習(xí)linux定時(shí)任務(wù)的時(shí)候,做的相關(guān)筆記,主要是在網(wǎng)上的找的一些資料加上自己的一些測(cè)試的內(nèi)容。目前自己只是剛開(kāi)始了解,都是比較基礎(chǔ)的內(nèi)容,僅記錄自己的學(xué)習(xí)過(guò)程。
1./etc/crontab 這個(gè)文件負(fù)責(zé)安排由系統(tǒng)管理員制定的維護(hù)系統(tǒng)以及其他任務(wù)的crontab。
一般默認(rèn)打開(kāi)是如下內(nèi)容:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# .—————- minute (0 - 59)
# | .————- hour (0 - 23)
# | | .———- day of month (1 - 31)
# | | | .——- month (1 - 12) OR jan,feb,mar,apr …
# | | | | .—- day of week (0 - 6) (Sunday=0 or 7) OR
#sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
可以改為如下(僅供參考):
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出現(xiàn)錯(cuò)誤,或者有數(shù)據(jù)輸出,數(shù)據(jù)作為郵件發(fā)給這個(gè)賬號(hào)
HOME=/ //使用者運(yùn)行的路徑,這里是根目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小時(shí)執(zhí)行/etc/cron.hourly內(nèi)的腳本
02 4 * * * root run-parts /etc/cron.daily //每天執(zhí)行/etc/cron.daily內(nèi)的腳本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期執(zhí)行 /etc/cron.weekly內(nèi)的腳本
42 4 1 * * root run-parts /etc/cron.monthly //每月去執(zhí)行/etc/cron.monthly內(nèi)的腳本
大家注意”run-parts”這個(gè)參數(shù)了,如果去掉這個(gè)參數(shù)的話,后面就可以寫(xiě)要運(yùn)行的某個(gè)腳本名,而不是文件夾名了
我看了一下我自己的,目前/etc/cron.hourly這寫(xiě)文件里面是空,這樣設(shè)置了之后,大家只需要把自己要執(zhí)行的文件放在對(duì)應(yīng)的文件夾就可以了
2./etc/cron.deny 和 /etc/cron.allow 文件
a.如果兩個(gè)文件都不存在,則只有root用戶才能使用crontab命令。
b.如果cron.allow存在但cron.deny不存在,則只有列在cron.allow文件里的用戶才能使用crontab命令,如果root用戶也不在里面,則root用戶也不能使用crontab。
c.如果cron.allow不存在, cron.deny存在,則只有列在cron.deny文件里面的用戶不能使用crontab命令,其它用戶都能使用。
d.如果兩個(gè)文件都存在,則列在cron.allow文件中而且沒(méi)有列在cron.deny中的用戶可以使用crontab,如果兩個(gè)文件中都有同一個(gè)用戶,
以cron.allow文件里面是否有該用戶為準(zhǔn),如果cron.allow中有該用戶,則可以使用crontab命令。
3.cron是一個(gè)linux下 的定時(shí)執(zhí)行工具,可以在無(wú)需人工干預(yù)的情況下運(yùn)行作業(yè)。
/sbin/service crond start //啟動(dòng)服務(wù)
/sbin/service crond stop //關(guān)閉服務(wù)
/sbin/service crond restart //重啟服務(wù)
/sbin/service crond reload //重新載入配置
/sbin/service crond status //查看服務(wù)狀態(tài)
4.每個(gè)用戶都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接創(chuàng)建或者直接修改。該crontab文件是通過(guò)crontab命令創(chuàng)建的
a.一般情況下這里面的文件只有root用戶可以查看
b.至于某個(gè)用戶在執(zhí)行定時(shí)任務(wù)的時(shí)候,這里面才會(huì)有該用戶想的文件,比如用戶名peter創(chuàng)建的定時(shí)任務(wù),你看見(jiàn)的內(nèi)容入下:
peter root
注意:/etc/crontab 這里的crontab文件是針對(duì)系統(tǒng)的任務(wù)
而/var/spool/cron下邊的crontab文件(名字不叫crontab,一般為用戶名)是針對(duì)某個(gè)用戶的
5.在crontab文件中如何輸入需要執(zhí)行的命令和時(shí)間。該文件中每行都包括六個(gè)域,其中前五個(gè)域是指定命令被執(zhí)行的時(shí)間,最后一個(gè)域是要被執(zhí)行的命令。
每個(gè)域之間使用空格或者制表符分隔。格式如下:
minute hour day-of-month month-of-year day-of-week commands
分 小時(shí) 日 月 星期 命令
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday)
記住幾個(gè)特殊符號(hào)的含義:
“*”代表取值范圍內(nèi)的數(shù)字,
“/”代表”每”,如每2分鐘:*/2
“-”代表從某個(gè)數(shù)字到某個(gè)數(shù)字,
“,”分開(kāi)幾個(gè)離散的數(shù)字
每個(gè)字段代表的含義如下:
Minute 每個(gè)小時(shí)的第幾分鐘執(zhí)行該任務(wù)
Hour 每天的第幾個(gè)小時(shí)執(zhí)行該任務(wù)
Day 每月的第幾天執(zhí)行該任務(wù)
Month 每年的第幾個(gè)月執(zhí)行該任務(wù)
DayOfWeek 每周的第幾天執(zhí)行該任務(wù)
Command 指定要執(zhí)行的程序
在這些字段里,除了“Command”是每次都必須指定的字段以外,其它字段皆為可選
字段,可視需要決定。對(duì)于不指定的字段,要用“*”來(lái)填補(bǔ)其位置。
舉例如下:
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命令
30 5 8 6 * ls 指定每年的6月8日5:30執(zhí)行l(wèi)s命令
30 6 * * 0 ls 指定每星期日的6:30執(zhí)行l(wèi)s命令[注:0表示星期天,1表示星期1,
以此類(lèi)推,也可以用英文來(lái)表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10號(hào)及20號(hào)的3:30執(zhí)行l(wèi)s命令[注:“,”用來(lái)連接多個(gè)不連續(xù)的時(shí)段]
25 8-11 * * * ls 每天8-11點(diǎn)的第25分鐘執(zhí)行l(wèi)s命令[注:“-”用來(lái)連接連續(xù)的時(shí)段]
/15 * * * ls 每15分鐘執(zhí)行一次ls命令 [即每個(gè)小時(shí)的第0 15 30 45 60分鐘執(zhí)行l(wèi)s命令 ]
30 6 /10 * ls 每個(gè)月中,每隔10天6:30執(zhí)行一次ls命令[即每月的1、11、21、31日是的6:30執(zhí)行一次ls 命令。 ]
50 7 * * * root run-parts /etc/cron.daily 每天7:50以root 身份執(zhí)行/etc/cron.daily目錄中的所有可執(zhí)行文件
[ 注:run-parts參數(shù)表示,執(zhí)行后面目錄中的所有可執(zhí)行文件。 ]
6.新增定時(shí)任務(wù):
1).在任何文件目錄皆可命令行輸入: crontab -e
這時(shí)候回會(huì)有一個(gè)可編輯的文件的打開(kāi)
在里面添加定時(shí)任務(wù),wq保存退出即可
eg:定時(shí)執(zhí)行php腳本
a.創(chuàng)建crontab.php,在文件中連接了數(shù)據(jù)庫(kù),每分鐘網(wǎng)數(shù)據(jù)庫(kù)中插入時(shí)間戳
b.需要把crontab.php變成可執(zhí)行的腳本文件在命令行下,腳本所在目錄chmod +x crontab.php(不確定是不是一定要變,我沒(méi)有變也可以執(zhí)行)
c.你的crontab.php文件中一定要在開(kāi)始處加上: #!/usr/local/php/bin/php -q(php文件目錄為自己的),(不確定是不是一定要變,我沒(méi)有變也可以執(zhí)行)
d.命令行輸入: crontab -e
e.在crontab -e打開(kāi)的文件中寫(xiě):
/1 * * * /opt/lampp/bin/php /home/peter/app/crontab.php //每分鐘執(zhí)行一次crontab腳本
這樣就可以了。
注意:有時(shí)你需要確定一下你的crontab服務(wù)是否開(kāi)啟,沒(méi)有開(kāi)啟話,你需要開(kāi)啟才能生效
2).直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應(yīng)的任務(wù):
/1 * * * peter /opt/lampp/bin/php /home/peter/app/crontab.php //每分鐘執(zhí)行一次crontab腳本
注意:1.一般需要管理員權(quán)限才能修改該文件
2.需要在時(shí)間和命令行之間添加用戶名才可以執(zhí)行
eg:# * * * * * user-name command to be executed
7.操作定時(shí)任務(wù)
1)查看定時(shí)任務(wù)
crontab -l //列出當(dāng)前的所有調(diào)度任務(wù)
crontab -l -u peter //列出用戶peter的所有調(diào)度任務(wù)
2)刪除定時(shí)任務(wù)
crontab -r //刪除所有任務(wù)調(diào)度工作.如果要?jiǎng)h除其中一個(gè),就用crontab -e在文件中去修改
3)編輯定時(shí)任務(wù)
crontab -e //編輯定時(shí)任務(wù)
聯(lián)系客服