Linux下定時執(zhí)行腳本_第1頁
Linux下定時執(zhí)行腳本_第2頁
Linux下定時執(zhí)行腳本_第3頁
Linux下定時執(zhí)行腳本_第4頁
Linux下定時執(zhí)行腳本_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、Linux下定時執(zhí)行腳本       今天做了個數(shù)據(jù)庫的備份腳本,順便系統(tǒng)得學習一下Linux下定時執(zhí)行腳本的設置。Linux下的定時執(zhí)行主要是使用crontab文件中加入定制計劃來執(zhí)行,設置比Windows稍微復雜一些(因為沒有圖形界面嘛),但是也不是非常復雜,基本上用過一遍就能記住了,關鍵是要記住/var/spool/cron這個目錄。下面看一下具體的用法:      首先查看一下/etc/crontab文件:  $ cat /etc/crontab SHELL=/bin/bashPATH=

2、/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/ # run-parts01 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts /etc/cron.daily22 4 * * 0 root run-parts /etc/cron.weekly42 4 1 * * root run-parts /etc/cron.monthly     前四行是有關設置cron任務運行的環(huán)境變量。SHELL變量的值指定系統(tǒng)使用的SHELL環(huán)境(該樣例為bash

3、 shell),PATH變量定義了執(zhí)行命令的路徑。Cron的輸出以電子郵件的形式發(fā)給MAILTO變量定義的用戶名。如果MAILTO變量定義為空字符串(MAILTO=""),電子郵件不會被發(fā)送。執(zhí)行命令或腳本時HOME變量可用來設置基目錄。    文件/etc/crontab中每行任務的描述格式如下:      minute hour day month dayofweek command       minute - 從0到59的整數(shù)   

4、60; hour - 從0到23的整數(shù)     day - 從1到31的整數(shù) (必須是指定月份的有效日期)    month - 從1到12的整數(shù) (或如Jan或Feb簡寫的月份)    dayofweek - 從0到7的整數(shù),0或7用來描述周日 (或用Sun或Mon簡寫來表示)    command - 需要執(zhí)行的命令(可用as ls /proc >> /tmp/proc或 執(zhí)行自定義腳本的命令)      root表示以

5、root用戶身份來運行    run-parts表示后面跟著的是一個文件夾,要執(zhí)行的是該文件夾下的所有腳本     對于以上各語句,星號(*)表示所有可用的值。例如*在指代month時表示每月執(zhí)行(需要符合其他限制條件)該命令。     整數(shù)間的連字號(-)表示整數(shù)列,例如1-4意思是整數(shù)1,2,3,4    指定數(shù)值由逗號分開。如:3,4,6,8表示這四個指定整數(shù)。    符號“/”指定步進設置?!?<interger>”表示步進值

6、。如0-59/2定義每兩分鐘執(zhí)行一次。步進值也可用星號表示。如*/3用來運行每三個月份運行指定任務。     以“#”開頭的為注釋行,不會被執(zhí)行。     如果一個cron任務需要定期而不是按小時,天,周,月來執(zhí)行,則需要添加/etc/cron.d目錄。這個目錄下的所有文件和文件/etc/crontab語法相同,查看樣例: # record the memory usage of the system every monday # at 3:30AM in the file /tmp/meminfo 30 3 * * mon cat

7、/proc/meminfo >> /tmp/meminfo # run custom scrpt the first day of every month at 4:10AM 10 4 1 * * /root/scrpts/backup.sh     除了root用戶之外的用戶可以執(zhí)行crontab配置計劃任務。所有用戶定義的crontab存儲在目錄/var/spool/cron下,任務會以創(chuàng)建者的身份被執(zhí)行。要以特定用戶創(chuàng)建一個crontab,先以該用戶登錄,執(zhí)行命令crontab -e,系統(tǒng)會啟動在VISUAL或者EDITOR中指定的的編輯軟件編輯

8、crontab。文件內(nèi)容與/etc/crontab格式相同。示例如下: 0 3 * * * /home/dbbackup/db1backup.sh backup0 4 * * * /home/dbbackup/db2backup.sh backup     表示每天3點執(zhí)行/home/dbbackup/db1backup.sh backup,4點執(zhí)行/home/dbbackup/db2backup.sh backup,如果是每五分鐘執(zhí)行一次可改為: */5 * * * * /home/dbbackup/db2backup.sh backup   

9、;  當更改的crontab需要保存時,文件會保存在成如下文件/var/spool/cron/username。文件名會根據(jù)用戶名而不同。     cron服務會每分鐘檢查一次/etc/crontab、/etc/cron.d/、/var/spool/cron文件下的變更。如果發(fā)現(xiàn)變化,就會下載到存儲器中。因此,即使crontab文件改變了,程序也不需要重新啟動。推薦自定義的任務使用crontab -e命令添加,退出后用/etc/init.d/crond restart命令重啟crond進程,官方文件說不用重啟進程,但我遇到不重啟無法運行任務的情況。開始不

10、知道/etc/crontab文件中的run-parts是什么意思,直接把命令按照/etc/crontab的格式加上總是無法運行,后來才知道run-parts是指后面跟著的是文件夾。       下面再附一篇介紹: * cron是一個linux下的定時執(zhí)行工具,可以在無需人工干預的情況下運行作業(yè)。由于Cron 是Linux的內(nèi)置服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:  /sbin/service crond start /啟動服務/sbin/service crond stop /關閉服務/sbin/ser

11、vice crond restart /重啟服務/sbin/service crond reload /重新載入配置  你也可以將這個服務在系統(tǒng)啟動的時候自動啟動:  在/etc/rc.d/rc.local這個腳本的末尾加上:/sbin/service crond start  現(xiàn)在Cron這個服務已經(jīng)在進程里面了,我們就可以用這個服務了,Cron服務提供以下幾種接口供大家使用:  1.直接用crontab命令編輯  cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數(shù)與說明:  crontab -u /設

12、定某個用戶的cron服務,一般root用戶在執(zhí)行這個命令的時候需要此參數(shù) crontab -l /列出某個用戶cron服務的詳細內(nèi)容 crontab -r /刪除沒個用戶的cron服務 crontab -e /編輯某個用戶的cron服務  比如說root查看自己的cron設置:crontab -u root -l 再例如,root想刪除fred的cron設置:crontab -u fred -r 在編輯cron服務時,編輯的內(nèi)容有一些格式和約定,輸入:crontab -u root -e  進入vi編輯模式,編輯的內(nèi)容一定要符合下面的格式:*/1 * * * * ls &g

13、t;> /tmp/ls.txt  這個格式的前一部分是對時間的設定,后面一部分是要執(zhí)行的命令,如果要執(zhí)行的命令太多,可以把這些命令寫到一個腳本里面,然后在這里直接調(diào)用這個腳本就可以了,調(diào)用的時候記得寫出命令的完整路徑。時間的設定我們有一定的約定,前面五個*號代表五個數(shù)字,數(shù)字的取值范圍和含義如下:  分鐘 (0-59) 小時(0-23) 日期(1-31) 月份(1-12) 星期(0-6) /0代表星期天      除了數(shù)字還有幾個個特殊的符號就是"*"、"/"和"-"、

14、",",*代表所有的取值范圍內(nèi)的數(shù)字,"/"代表每的意思,"*/5"表示每5個單位,"-"代表從某個數(shù)字到某個數(shù)字,","分開幾個離散的數(shù)字。以下舉幾個例子說明問題:  每天早上6點 - 0 6 * * * echo "Good morning." >> /tmp/test.txt /注意單純echo,從屏幕上看不到任何輸出,因為cron把任何輸出都email到root的信箱了。  每兩個小時 - 0 */2 * * * echo "

15、Have a break now." >> /tmp/test.txt  晚上11點到早上8點之間每兩個小時,早上八點 - 0 23-7/28 * * * echo "Have a good dream:)" >> /tmp/test.txt  每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點 - 0 11 4 * 1-3 command line  1月1日早上4點 - 0 4 1 1 * command line      每次編輯完某個用戶的cron設置后,cro

16、n自動在/var/spool/cron下生成一個與此用戶同名的文件,此用戶的cron信息都記錄在這個文件中,這個文件是不可以直接編輯的,只可以用crontab -e 來編輯。cron啟動后每過一份鐘讀一次這個文件,檢查是否要執(zhí)行里面的命令。因此此文件修改后不需要重新啟動cron服務。  2.編輯/etc/crontab 文件配置cron      cron服務每分鐘不僅要讀一次/var/spool/cron內(nèi)的所有文件,還需要讀一次/etc/crontab,因此我們配置這個文件也能運用cron服務做一些事情。用crontab配置是針對某個用戶的

17、,而編輯/etc/crontab是針對系統(tǒng)的任務。此文件的文件格式是:  SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root /如果出現(xiàn)錯誤,或者有數(shù)據(jù)輸出,數(shù)據(jù)作為郵件發(fā)給這個帳號HOME=/      /使用者運行的路徑,這里是根目錄# run-parts01 * * * * root run-parts /etc/cron.hourly /每小時執(zhí)行/etc/cron.hourly內(nèi)的腳本02 4 * * * root run-parts /etc/cron.daily

18、 /每天執(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"這個參數(shù)了,如果去掉這個參數(shù)的話,后面就可以寫要運行的某個腳本名,而不是文件夾名了。 AIX下有一個腳本,內(nèi)容如下:#!/bin/shPIP= ping -c 1 2 |wc -le

19、cho $PIP我手工執(zhí)行腳本執(zhí)行結(jié)果為7,這個結(jié)果是對的但是我用crontab -e命令加一條40 * * * * /df/bin/code_ftp_root >> /df8003/log/codeftp.logcodeftp.log里顯示為0好像沒有正確執(zhí)行,高手給看一下為什么啊?直接在腳本就輸出到文件里不更好嗎#!/bin/shPIP= ping -c 1 2 |wc -lecho $PIP >> /df8003/log/codeftp.log寫錯了 等號前后不要有空格#!/bin/shPIP=ping -c 1 2 |wc -lecho $PIP >> /df8003/log/codeftp.log可是為什么手工能執(zhí)行正確,crontab定時執(zhí)行是會不正確呢?lz在腳本中添加一行set -x試試主席說了,另外PIP=那行,=后面不要有空格PIP那個空格我去掉了如果去掉空格 我在linux里試了 按你添加crontab的方式是木油問題的呀 么有AIX環(huán)境 測試不了 這樣試試把命令加上路徑試試#!/bin/shPIP=/path/pi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論