linuxcrontab腳本
① linux瀹氭椂紼嬪簭linux瀹氭椂紼嬪簭
濡備綍鍐欎竴涓猯inux鐨勫畾鏃剁▼搴忚剼鏈?(浠g爜)錛
姒傝堪
linux鐢ㄥ埌瀹氭椂浠誨姟闇瑕乧rontab鐨勫府鍔
棣栧厛緇堢閿鍏ワ細crontab-e
root@sys#錛歝rontab-e
鐒跺悗榪涜岀紪杈戱紝榪欓噷鎿嶄綔鍜寁im鎿嶄綔涓鑷
鍋囪撅紝鎴戦渶瑕佸畾鏃舵瘡縐掕塊棶涓嬈℃寚瀹氱綉欏碉紝璁塊棶緗戦〉鐨勮剼鏈宸茬粡鍐欏ソ浜嗭紝鍙玽iew.sh錛屾斁鍦ㄤ簡/user鐩褰曚笅錛岄偅涔堝畾鏃惰剼鏈灝嗛渶瑕佽繖涔堜簺銆
*/1****/bin/sh/user/view.sh
瑙f瀽
crontab
鍙傛暟錛
-u:鍙鏈塺oot鎵嶈兘榪涜岃繖涓浠誨姟錛屼篃鍗沖府鍏朵粬鐢ㄦ埛鏂板緩/鍒犻櫎crontab宸ヤ綔璋冨害;
-e:緙栬緫crontab鐨勫伐浣滃唴瀹;
-l:鏌ラ槄crontab鐨勫伐浣滃唴瀹;
-r:鍒犻櫎鎵鏈夌殑crontab鐨勫伐浣滃唴瀹癸紝鑻ヤ粎瑕佸垹闄や竴欏癸紝璇風敤-e鍘葷紪杈戙
crontab-e榪涘叆緙栬緫妯″紡#姝ゆ椂浼氳繘鍏vi鐨勭紪杈戠晫闈㈣╀綘緙栬緫宸ヤ綔銆傛敞鎰忓埌錛屾瘡欏瑰伐浣滈兘鏄涓琛屻
*/1****/bin/sh/user/view.sh#鍒嗘椂鏃ユ湀鍛▅=========鍛戒護琛===|
浠h〃鎰忎箟鍒嗛挓灝忔椂鏃ユ湡鏈堜喚鍛ㄥ懡浠
鏁板瓧鑼冨洿0~590~231~311~120~7灝卞懡浠ゅ晩
鐗規畩瀛楃-浠h〃鎰忎箟
*(鏄熷彿)---浠h〃浠諱綍鏃跺埢閮芥帴鍙楃殑鎰忔濄備婦渚嬫潵璇達紝鑼冧緥涓鍐呴偅涓鏃ャ佹湀銆佸懆閮芥槸*錛屽氨浠h〃鐫涓嶈轟綍鏈堛佷綍鏃ョ殑紺兼嫓鍑犵殑12錛00閮芥墽琛屽悗緇鍛戒護鐨勬剰鎬濄
,(閫楀彿)---浠h〃鍒嗛殧鏃舵電殑鎰忔濄備婦渚嬫潵璇達紝濡傛灉瑕佹墽琛岀殑宸ヤ綔鏄3錛00涓6錛00鏃訛紝灝變細鏄錛
03,6***command
鏃墮棿榪樻槸鏈変簲鍒楋紝涓嶈繃絎浜屽垪鏄3,6錛屼唬琛3涓6閮介傜敤
-(鍑忓彿)---浠h〃涓孌墊椂闂磋寖鍥村唴錛屼婦渚嬫潵璇達紝8鐐瑰埌12鐐逛箣闂寸殑姣忓皬鏃剁殑20鍒嗛兘榪涜屼竴欏瑰伐浣滐細
208-12***command
浠旂粏鐪嬪埌絎浜屽垪鍙樻垚8-12.浠h〃8,9,10,11,12閮介傜敤鐨勬剰鎬
/n(鏂滅嚎)---閭d釜n浠h〃鏁板瓧錛屽嵆鏄姣忛殧n鍗曚綅闂撮殧鐨勬剰鎬濓紝渚嬪傛瘡浜斿垎閽熻繘琛屼竴嬈★紝鍒欙細
*/5****command
鐢*涓/5鏉ユ惌閰嶏紝涔熷彲浠ュ啓鎴0-59/5錛屾剰鎬濈浉鍚
鎷撳睍鍐呭
linux
Linux鏄涓濂楀厤璐逛嬌鐢ㄥ拰鑷鐢變紶鎾鐨勭被Unix鎿嶄綔緋葷粺錛屾槸涓涓鍩轟簬POSIX鍜孶NIX鐨勫氱敤鎴楓佸氫換鍔°佹敮鎸佸氱嚎紼嬪拰澶欳PU鐨勬搷浣滅郴緇熴傚畠鑳借繍琛屼富瑕佺殑UNIX宸ュ叿杞浠躲佸簲鐢ㄧ▼搴忓拰緗戠粶鍗忚銆傚畠鏀鎸32浣嶅拰64浣嶇‖浠躲侺inux緇ф壙浜哢nix浠ョ綉緇滀負鏍稿績鐨勮捐℃濇兂錛屾槸涓涓鎬ц兘紼沖畾鐨勫氱敤鎴風綉緇滄搷浣滅郴緇熴
Linux鎿嶄綔緋葷粺璇炵敓浜1991騫10鏈5鏃ワ紙榪欐槸絎涓嬈℃e紡鍚戝栧叕甯冩椂闂達級銆侺inux瀛樺湪鐫璁稿氫笉鍚岀殑Linux鐗堟湰錛屼絾瀹冧滑閮戒嬌鐢ㄤ簡Linux鍐呮牳銆侺inux鍙瀹夎呭湪鍚勭嶈$畻鏈虹‖浠惰懼囦腑錛屾瘮濡傛墜鏈恆佸鉤鏉跨數鑴戙佽礬鐢卞櫒銆佽嗛戞父鎴忔帶鍒跺彴銆佸彴寮忚$畻鏈恆佸ぇ鍨嬫満鍜岃秴綰ц$畻鏈恆
涓ユ牸鏉ヨ詫紝Linux榪欎釜璇嶆湰韜鍙琛ㄧずLinux鍐呮牳錛屼絾瀹為檯涓婁漢浠宸茬粡涔犳儻浜嗙敤Linux鏉ュ艦瀹規暣涓鍩轟簬Linux鍐呮牳錛屽苟涓斾嬌鐢℅NU宸ョ▼鍚勭嶅伐鍏峰拰鏁版嵁搴撶殑鎿嶄綔緋葷粺銆
linux瀹氭椂浠誨姟鍘熺悊錛
Linux瀹氭椂浠誨姟瀹炵幇鍘熺悊
Linux緋葷粺瀹氭椂浠誨姟(crond)涓:瀹氫箟crond鏄疞inux緋葷粺涓鐢ㄦ潵瀹氭湡鎵ц屽懡浠ゆ垨鎸囧畾紼嬪簭浠誨姟鐨勪竴縐嶆湇鍔℃垨杞浠1銆乴inux緋葷粺鑷韜瀹氭湡鎵ц岀殑浠誨姟(杞璇㈢郴緇熸棩蹇椼佸囦喚鏁版嵁絳)2銆佺敤鎴鋒墽琛岀殑浠誨姟(瀹氭椂鏇存柊鍚屾ユ椂闂淬佺綉絝欐暟鎹澶囦喚絳)浜:鍛戒護璇娉曞畾鏃朵換鍔$殑鍛戒護鏄痗rontab,鍏跺畧鎶...
linux濡備綍璁劇疆瀹氭椂鏈嶅姟錛
鍦↙inux涓鍙浠ヤ嬌鐢╟rontab鍛戒護鏉ヨ劇疆瀹氭椂鏈嶅姟錛岄栧厛浣跨敤crontab-e鍛戒護鎵撳紑crontab鏂囦歡錛岀劧鍚庡湪鏂囦歡涓娣誨姞瀹氭椂浠誨姟錛屾牸寮忎負錛氬垎鏃舵棩鏈堝懆鍛戒護錛屽叾涓鍒嗐佹椂銆佹棩銆佹湀銆佸懆鍒嗗埆琛ㄧず鍒嗛挓銆佸皬鏃躲佹棩鏈熴佹湀浠姐佹槦鏈熷嚑錛屾渶鍚庝繚瀛樻枃浠跺嵆鍙銆
linux涓嬬紪鍐欎竴涓猻hell鑴氭湰錛屾瘡澶0鐐癸紝瀹氭椂鎵ц屾煇涓鍙鎵ц岀▼搴弔est銆傚垰瀛︿範shell甯屾湜澶т緺浠緇欎釜浠g爜鍙傝冿紵
鍒涘緩涓涓鏂扮殑crontab鏂囦歡
鍚慶ron榪涚▼鎻愪氦涓涓猚rontab鏂囦歡涔嬪墠錛岄栧厛瑕佽劇疆鐜澧冨彉閲廍DITOR銆傜紪杈$HOME鐩褰曚笅鐨.profile鏂囦歡錛屽湪鍏朵腑鍔犲叆榪欐牱涓琛:
EDITOR=vi;exportEDITOR
鐒跺悗淇濆瓨騫墮鍑恆傚壋寤轟竴涓鍚嶄負testcron鐨勬枃浠訛紝鍐呭瑰備笅錛
#runtest.sheveryhalfday
*0,12***/home/username/test.sh
淇濆瓨騫墮鍑恆傜劧鍚庢彁浜よ繖涓浠誨姟錛
$crontabtestcron
② 如何使用Linux的Crontab定時執行php腳本的方法
寫好要執行的PHP文件
然後使用Crontab 對應的時間格式等進行執行即可
linux crontab&每隔10秒執行一次 linux下定時執行任務的方法
=============CRONTAB執行PHP文件============
原理:Crontab sleep結合實現每N秒執行文件,延時方法 sleep N
注意:
60必須能整除間隔的秒數(沒有餘數),例如間隔的秒數是2,4,6,10,12等。
如果間隔的秒數太少,例如2秒執行一次,這樣就需要在crontab 加入60/2=30條語句。不建議使用此方法,可以使用下面介紹的第二種方法。
在LINUX中你應該先輸入crontab -e,
然後就會有個vi編輯界面,
再輸入0 3 * * 1 /clearigame2內容到裡面
:wq 保存退出。
在LINUX中,周期執行的任務一般由cron這個守護進程來處理[ps -ef|grep cron]。
cron讀取一個或多個配置文件,這些配置文件中包含了命令行及其調用時間。
cron的配置文件稱為「crontab」,是「cron table」的簡寫。
一、cron在3個地方查找配置文件:
1、/var/spool/cron/ 這個目錄下存放的是每個用戶包括root的crontab任務,每個任務以創建者的名字命名,比如tom建的crontab任務對應的文件就是/var/spool/cron/tom。
一般一個用戶最多隻有一個crontab文件。
二、/etc/crontab 這個文件負責安排由系統管理員制定的維護系統以及其他任務的crontab。
三、/etc/cron.d/ 這個目錄用來存放任何要執行的crontab文件或腳本。
四、許可權
crontab許可權問題到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下:
1、如果兩個文件都不存在,則只有root用戶才能使用crontab命令。
2、如果cron.allow存在但cron.deny不存在,則只有列在cron.allow文件里的用戶才能使用crontab命令,如果root用戶也不在裡面,則root用戶也不能使用crontab。
3、如果cron.allow不存在, cron.deny存在,則只有列在cron.deny文件裡面的用戶不能使用crontab命令,其它用戶都能使用。
4、如果兩個文件都存在,則列在cron.allow文件中而且沒有列在cron.deny中的用戶可以使用crontab,如果兩個文件中都有同一個用戶,
以cron.allow文件裡面是否有該用戶為准,如果cron.allow中有該用戶,則可以使用crontab命令。
在crontab文件中如何輸入需要執行的命令和時間。該文件中每行都包括六個域,其中前五個域是指定命令被執行的時間,最後一個域是要被執行的命令。
每個域之間使用空格或者製表符分隔。格式如下:
minute hour day-of-month month-of-year day-of-week commands
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) commands(代表要執行的腳本)
除了數字還有幾個個特殊的符號就是"*"、"/"和"-"、",",*代表所有的取值范圍內的數字,"/"代表每的意思,"/5"表示每5個單位,"-"代表從某個數字到某個數字,","分開幾個離散的數字。
基本格式 :
*****command
分 時 日 月 周 命令
第1列表示分鍾1~59 每分鍾用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
crontab文件的一些例子:
#每晚的21:30重啟apache。
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#每月1、10、22日
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#每天早上6點10分
10 6 * * * date
#每兩個小時
0 */2 * * * date
#晚上11點到早上8點之間每兩個小時,早上8點
0 23-7/2,8 * * * date
#每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * mon-wed date
#1月份日早上4點
0 4 1 jan * date
很多時候,我們計劃任務需要精確到秒來執行,根據以下方法,可以很容易地以秒執行任務。
以下方法將每10秒執行一次#執行PHP文件
# crontab -e
* * * * * php /www/web/test.php
* * * * * sleep 10; php /www/web/test.php
* * * * * sleep 20; php /www/web/test.php
* * * * * sleep 30; php /www/web/test.php
* * * * * sleep 40; php /www/web/test.php
* * * * * sleep 50; php /www/web/test.php
每5秒執行一次
* * * * * for i in `seq 120`; do awesome_scripts& sleep 0.5; done
===================執行腳本==================
原理:每分鍾執行腳本,使用for語句循環實現每N秒執行文件
注意:如果60不能整除間隔的秒數,則需要調整執行的時間。例如需要每7秒執行一次,就需要找到7與60的最小公倍數,7與60的最小公倍數是420(即7分鍾)。
1.vim crontab1.sh
#!/bin/bash
step=2 #間隔的秒數,不能大於60
for (( i = 0; i < 60; i=(i+step) )); do
$(php '/www/web/test.php')
sleep $step
done
exit 0
2.crontab -e 執行腳本 每分鍾執行
# m h dom mon dow command
* * * * * /home/php/crontab/crontab.sh
每7分鍾執行一次,60*7 = 420,則循環的時候循環最大是420;則 crontab.sh step的值為7,循環結束條件i < 420, crontab -e可以輸入以下語句來實現
# m h dom mon dow command
*/7 * * * * /home/php/crontab/crontab.sh
③ linux下編寫定時任務crontab
linux下的crontab服務:
1、crontab 是用來讓使用者在固定時間或固定間隔執行程序之用
在linux平台上如果需要實現任務調度功能可以編寫cron腳本來實現。
以某一頻率執行任務
linux預設會啟動crond進程,crond進程不需要用戶啟動、關閉。
crond進程負責讀取調度任務並執行,用戶只需要將相應的調度腳本寫入cron的調度配置文件中。
cron的調度文件有以下幾個:
1. crontab
2. cron.d
3. cron.daily
4. cron.hourly
5. cron.monthly
6. cron.weekly
如果用的任務不是以hourly monthly weekly方式執行,則可以將相應的crontab寫入到crontab 或cron.d目錄中。
示例:
每隔一分鍾執行一次腳本 /opt/bin/test-cron.sh
可以在cron.d新建腳本 echo-date.sh
內容為
*/1 * * * * root /opt/bin/test-cron.sh
2、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
現在Cron這個服務已經在進程裡面了,我們就可以用這個服務了
查看服務是否已經運行用 ps -ax | grep cron
3、crontab命令
查看該用戶下的crontab服務是否創建成功, 用 crontab -l 命令
命令 which php 查看linux下安裝的php的路徑
cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:
crontab -u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數
crontab -l //列出某個用戶cron服務的詳細內容
crontab -r //刪除沒個用戶的cron服務
crontab -e //編輯某個用戶的cron服務
比如說root查看自己的cron設置:crontab -u root -l
再例如,root想刪除fred的cron設置:crontab -u fred -r
在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e
進入vi編輯模式,編輯的內容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
任務調度的crond常駐命令crond 是linux用來定期執行程序的命令。當安裝完成操作系統之後,默認便會啟動此 任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。
crontab命令選項:
-u指定一個用戶
-l列出某個用戶的任務計劃
-r刪除某個用戶的任務
-e編輯某個用戶的任務
4、cron文件語法:
分 小時 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范圍,0表示周日一般一行對應一個任務)
5、 新增調度任務
新增調度任務可用兩種方法:
1)、在命令行輸入: crontab -e 然後添加相應的任務,wq存檔退出。
2)、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務。
6、 查看調度任務
crontab -l //列出當前的所有調度任務
crontab -l -u jp //列出用戶jp的所有調度任務
7、 刪除任務調度工作
crontab -r //刪除所有任務調度工作
8、 任務調度執行結果的轉向
例1:每天5:30執行ls命令,並把結果輸出到/jp/test文件中
30 5 * * * ls >/jp/test 2>&1
註:2>&1 表示執行結果及錯誤信息。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發給這個帳號
HOME=/ //使用者運行的路徑,這里是根目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小時執行/etc/cron.hourly內的腳本
02 4 * * * root run-parts /etc/cron.daily //每天執行/etc/cron.daily內的腳本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期執行 /etc/cron.weekly內的腳本
42 4 1 * * root run-parts /etc/cron.monthly //每月去執行/etc/cron.monthly內的腳本
大家注意」run-parts」這個參數了,如果去掉這個參數的話,後面就可以寫::要運行的某個腳本名,而不是文件夾名了。
總結:
編寫定時任務的兩種方式:1.sudo vim /etc/crontab 2. sudo crontab -e
查看定時任務的兩種方式:1.sudo cat /etc/crontab 2.sudo crontab -l
*/1 * * * * appuser cd /app/webserver/website/api-cb.chuchujie.com/master/current/script/ && ./back_coupon.sh 2 10 >> /dev/null 2>&1
查看定時任務是否運行:
sudo tail -f /var/log/cron //定時任務日誌(查看剛才設置的任務是否執行)
註:腳本有可執行許可權
sh a.sh(不需要執行許可權)
./sh (需要執行許可權)
1.當shell腳本具有可執行許可權時,用sh filename與./filename執行腳本是沒有區別的。./filename是因為當前目錄沒有在PATH中,所有"."是用來表示當前目錄的。
④ 如何使用Linux的Crontab定時執行PHP腳本的方法
鍵入 crontab
-e 編輯crontab服務文件
------------------------------------------Ubuntu中的linux---------------
安裝lynx包:apt-get isntall lynx
先寫ln.sh腳本:lynx http://10.11.12.49/data_task.php
設置定時:crontab -e
0 1 * * * bash /var/www/test/ln.sh
-------------------------------------------------------------------------
分為兩種情況:
第一種情況:你的php腳本中沒有引入其他PHP文件,也就是說沒有include,require_once等命令的PHP文件
* */1 * * * /usr/local/php/bin/php
/var/www/html/wwwroot/web/script.php (每一小時執行一次script.php)
注意,這樣寫需要把PHP變成可執行的腳本文件。在命令行下,腳本所在目錄
chmod +x script.php
注意:你的script.php文件中一定要在開始處加上: #!/usr/local/php/bin/php -q
,下面是一個完整的script.php文件代碼
<?php
#!/usr/local/php/bin/php -q
session_start();
define( "DB_PASSWORD", "111111" ); // 伺服器登陸密碼
define( "DB_NAME", "db_shopping" ); // 資料庫名稱
define( "DB_USER", "root" ); // 伺服器登陸用戶
define( "DB_HOST", "127.0.0.1" ); // 伺服器IP地址或名稱
define( "DB_PORT", "3306" ); // 伺服器登陸埠號
define( "DB_CHARSET", "utf8" ); // 資料庫默認語言
define( "DB_DEBUG", false ); // 是否設置為調試模式
define( "DB_CLOSE", false ); // 是否主動關閉資料庫連接
$con=mysql_connect(DB_HOST.":".DB_PORT,DB_USER,DB_PASSWORD);
mysql_query ( "SET character_set_connection = ".DB_CHARSET.",
character_set_results = ".DB_CHARSET.", character_set_client =
binary");
if (!$con) die("Mysql Error:".mysql_error());
mysql_select_db(DB_NAME,$con);
//$dates=date()
$sqll="insert into test(NAME,Sex,thisdate,state)
values('love','0','2011-08-11','1')";
$resl=mysql_query($sqll);
echo "成功...";
?>
/usr/local/php/bin/php的意思是:用/usr/local/php/bin/目錄中的php.exe文件來執行
/var/www/html/wwwroot/web/script.php
第二種情況:你的php腳本中有引入其他PHP文件,也就是說有用到include,require_once命令的PHP文件(先寫shell腳本)
上面的方法有一個問題:當script腳本中有include文件時,腳本根本找不對PHP的路徑,php將會在/bin/local/php目錄下找文件,當然找不到。
所以,遇見這種情況,按照下面的方法做:
在終端上輸入如下命令得到sh 和 lynx 程序的路徑:
whereis sh
whereis lynx
or
which sh
which lynx
隨便輸入一個,其中便會返回你要的路徑。如果你的系統里沒有lynx,試試links,w3m,或者
links2,這些是其它的文本模型瀏覽器。這些瀏覽器將會運行你的腳本。
然後你需要創建一個sh文件,用它來調用php文件,通過lynx。假設你的伺服器已經安裝了lynx,sh路徑為
/bin/sh,lynx路徑為 /usr/local/bin/lynx
#!/bin/sh
/usr/local/bin/lynx -source
http://www.yoursite.com/folder/script.php
注意感嘆號
把這個腳本保存為cron-lynx.sh
保存到一個你找得到的地方,比如:
你可以把它放在網站根目錄。
然後再創建一個script.php的文件。當cron運行的時候,將會通過lynx來調用它。這個文件可以通過瀏覽器來訪問。
然後編輯主機的crontab,像下面這樣。
*/1 * * * * root /bin/sh
/usr/www/yourdirectory/sh_scripts/cron-lynx.sh
在/bin/sh 和 /usr 間有空格。就這樣就設好了,還有一點要注意的是,你的sh文件和php文件都正確無誤。
===================================================================================
linux下的crontab服務:
1、crontab 是用來讓使用者在固定時間或固定間隔執行程序之用
在linux平台上如果需要實現任務調度功能可以編寫cron腳本來實現。
以某一頻率執行任務
linux預設會啟動crond進程,crond進程不需要用戶啟動、關閉。
crond進程負責讀取調度任務並執行,用戶只需要將相應的調度腳本寫入cron的調度配置文件中。
cron的調度文件有以下幾個:
1.
crontab
2.
cron.d
3.
cron.daily
4.
cron.hourly
5.
cron.monthly
6.
cron.weekly
如果用的任務不是以hourly monthly weekly方式執行,則可以將相應的crontab寫入到crontab
或cron.d目錄中。
示例:
每隔一分鍾執行一次腳本 /opt/bin/test-cron.sh
可以在cron.d新建腳本 echo-date.sh
內容為
*/1 * * * * root /opt/bin/test-cron.sh
2、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
現在Cron這個服務已經在進程裡面了,我們就可以用這個服務了
查看服務是否已經運行用 ps -ax | grep cron
3、crontab命令
查看該用戶下的crontab服務是否創建成功, 用 crontab -l
命令
命令 which php 查看linux下安裝的php的路徑
cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:
crontab -u
//設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數
crontab -l //列出某個用戶cron服務的詳細內容
crontab -r //刪除沒個用戶的cron服務
crontab -e //編輯某個用戶的cron服務
比如說root查看自己的cron設置:crontab -u root -l
再例如,root想刪除fred的cron設置:crontab -u fred -r
在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e
進入vi編輯模式,編輯的內容一定要符合下面的格式:*/1 * * * * ls
>> /tmp/ls.txt
任務調度的crond常駐命令crond
是linux用來定期執行程序的命令。當安裝完成操作系統之後,默認便會啟動此
任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。
crontab命令選項:
-u指定一個用戶
-l列出某個用戶的任務計劃
-r刪除某個用戶的任務
-e編輯某個用戶的任務
4、cron文件語法:
分
小時
日
月
星期
命令
0-59
0-23
1-31
1-12
0-6
command
(取值范圍,0表示周日一般一行對應一個任務)
記住幾個特殊符號的含義:
「*」代表取值范圍內的數字,
「/」代表」每」,
「-」代表從某個數字到某個數字,
「,」分開幾個離散的數字
5、任務調度設置文件的寫法
可用crontab
-e命令來編輯,編輯的是/var/spool/cron下對應用戶的cron文件,也可以直接修改/etc/crontab文件
具體格式如下:
Minute Hour Day Month Dayofweek
command
分鍾
小時
天
月
天每星期
命令
每個欄位代表的含義如下:
Minute
每個小時的第幾分鍾執行該任務
Hour
每天的第幾個小時執行該任務
Day
每月的第幾天執行該任務
Month
每年的第幾個月執行該任務
DayOfWeek
每周的第幾天執行該任務
Command
指定要執行的程序
在這些欄位里,除了「Command」是每次都必須指定的欄位以外,其它欄位皆為可選
欄位,可視需要決定。對於不指定的欄位,要用「*」來填補其位置。
舉例如下:
5
*
*
*
*
ls
指定每小時的第5分鍾執行一次ls命令
30
5
*
*
*
ls
指定每天的 5:30 執行ls命令
30
7
8
*
*
ls
指定每月8號的7:30分執行ls命令
30
5
8
6
*
ls
指定每年的6月8日5:30執行ls命令
30
6
*
*
0
ls
指定每星期日的6:30執行ls命令[註:0表示星期天,1表示星期1,
以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等。]
30
3
10,20
*
*
ls
每月10號及20號的3:30執行ls命令[註:「,」用來連接多個不連續的時段]
25
8-11
*
*
*
ls
每天8-11點的第25分鍾執行ls命令[註:「-」用來連接連續的時段]
*/15
*
*
*
*
ls
每15分鍾執行一次ls命令 [即每個小時的第0 15 30 45 60分鍾執行ls命令 ]
30
6
*/10
*
*
ls
每個月中,每隔10天6:30執行一次ls命令[即每月的1、11、21、31日是的6:30執行一次ls 命令。 ]
每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行文件
50
7
*
*
*
root
run-parts
/etc/cron.daily [
註:run-parts參數表示,執行後面目錄中的所有可執行文件。 ]
6、 新增調度任務
新增調度任務可用兩種方法:
1)、在命令行輸入: crontab -e 然後添加相應的任務,wq存檔退出。
2)、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務。
7、 查看調度任務
crontab -l //列出當前的所有調度任務
crontab -l -u jp
//列出用戶jp的所有調度任務
8、 刪除任務調度工作
crontab -r //刪除所有任務調度工作
9、 任務調度執行結果的轉向
例1:每天5:30執行ls命令,並把結果輸出到/jp/test文件中
30 5 * * * ls >/jp/test
2>&1
註:2>&1 表示執行結果及錯誤信息。
編輯/etc/crontab 文件配置cron
cron服務每分鍾不僅要讀一次/var/spool/cron內的所有文件,還需要讀一次
/etc/crontab,因此我們配置這個文件也能運用cron服務做一些事情。
用crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務。此文件的文件格式是:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發給這個帳號
HOME=/ //使用者運行的路徑,這里是根目錄
# run-parts
01
*
*
*
*
root run-parts
/etc/cron.hourly
//每小時執行/etc/cron.hourly內的腳本
02
4
*
*
*
root run-parts
/etc/cron.daily
//每天執行/etc/cron.daily內的腳本
22
4
*
*
0
root run-parts
/etc/cron.weekly
//每星期執行 /etc/cron.weekly內的腳本
42
4
1
*
*
root run-parts
/etc/cron.monthly
//每月去執行/etc/cron.monthly內的腳本
大家注意」run-parts」這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是文件夾名了
例如:
1) 在命令行輸入: crontab -e 然後添加相應的任務,wq存檔退出。
2)直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務
11 2 21 10 * rm -rf /mnt/fb