1.腳本實(shí)例
將以下腳本保存為getftp.sh
#!/bin/bashdatesign=`date-d-95day+%Y%m%d`ftp-nv12.2.2.28<<!FTPRUNuseruser01user01promptbincdTXTlcd/app/info/getftpmget${datesign}*.txtbye!FTPRUN腳本說(shuō)明:
#!/bin/bash
#表明該文本的內(nèi)容為SHELL命令datesign=`date-d-95day+%Y%m%d`
#聲明變量datesign,用來(lái)記錄需要獲取文件名中的日期標(biāo)簽。#-95day表示距系統(tǒng)時(shí)間的天數(shù),假如今天是20121123,#-2day就表示20121121。
#%Y表示年,如2012,%y也表示年,但是格式為12#%m表示月,如11#%d表示日,如23
#同樣,%H,%M,%S分明表示時(shí)分秒,
#以系統(tǒng)時(shí)間為2012年11月23日10時(shí)55分44秒為例
#`date–d-2day+%Y-%m-%d%H:%M:%S`的值為:2012112110:55:44ftp-nv12.2.2.28<<!FTPRUN
#登錄FTP服務(wù)器,12.2.2.28表示FTP服務(wù)器的ip地址
#從!FTPRUN至代碼結(jié)束的!FTPRUN是FTP命令。#!FTPRUN是自己隨意給的標(biāo)示名useruser01user01
#給出FTP的用戶(hù)名和密碼。此處用戶(hù)名和密碼都是:user01Prompt
#該命令忽略FTP交互Bin
#二進(jìn)制格式傳送cdTXT
#TXT表示數(shù)據(jù)文件在FTP服務(wù)器上的目錄。lcd/app/info/getftp
#/app/info/getftp數(shù)據(jù)文件要下載到服務(wù)器的目錄mget${datesign}*.txt
#需要下載的文件,${datesign}為前面聲明的變量,*表示通配符Bye
#FTP完成退出!FTPRUN
2. 執(zhí)行腳本使其定時(shí)調(diào)用
SHELL文件在執(zhí)行時(shí),可能會(huì)因存在特殊字符而出現(xiàn)問(wèn)題。需要將getftp.sh文件轉(zhuǎn)換一下格式??梢灾苯釉趌inux下執(zhí)行(假如不能運(yùn)行則可以賦予它執(zhí)行的權(quán)限后在運(yùn)行chmod +x ./getftp.sh):
DOS2UNIX/app/info/getftp/getftp.sh
/app/info/getftp為getftp.sh腳本所在目錄。
通過(guò)vi編輯器根據(jù)實(shí)際環(huán)境對(duì)腳本進(jìn)行相應(yīng)更改,即可進(jìn)行測(cè)試。3.自動(dòng)執(zhí)行配置在Linux下執(zhí)行:
Crontab–e*5***/app/info/getftp/getftp.sh
保存退出。代碼就會(huì)在每天5:00自動(dòng)運(yùn)行。
附:cron調(diào)度進(jìn)程說(shuō)明
cron是系統(tǒng)主要的調(diào)度進(jìn)程,可以在無(wú)需人工干預(yù)的情況下運(yùn)行作業(yè)。有一個(gè)叫做crontab的命令允許用戶(hù)提交、編輯或刪除相應(yīng)的作業(yè)。每一個(gè)用戶(hù)都可以有一個(gè)crontab文件來(lái)保存調(diào)度信息??梢允褂盟\(yùn)行任意一個(gè)shell腳本或某個(gè)命令,每小時(shí)運(yùn)行一次,或一周三次,這完全取決于你。每一個(gè)用戶(hù)都可以有自己的crontab文件,但在一個(gè)較大的系統(tǒng)中,系統(tǒng)管理員一般會(huì)禁止這些文件,而只在整個(gè)系統(tǒng)保留一個(gè)這樣的文件。系統(tǒng)管理員是通過(guò)cron.deny和cron.allow這兩個(gè)文件來(lái)禁止或允許用戶(hù)擁有自己的crontab文件。
crontab的域
為了能夠在特定的時(shí)間運(yùn)行作業(yè),需要了解crontab文件每個(gè)條目中各個(gè)域的意義和格式。
下面就是這些域:第1列分鐘1~59
第2列小時(shí)1~23(0表示子夜)第3列日1~31第4列月1~12
第5列星期0~6(0表示星期天)第6列要運(yùn)行的命令crontab的范例格式:
下面是crontab的格式:
分[]時(shí)[]日[]月[]星期[]要運(yùn)行的命令其中[]表示空格。
crontab文件的一個(gè)條目是從左邊讀起的,第一列是分,最后一列是要運(yùn)行的命令,它位于星期的后面。在這些域中,可以用橫杠-來(lái)表示一個(gè)時(shí)間范圍,例如你希望星期一至星期五運(yùn)行某個(gè)作業(yè),那么可以在星期域使用1-5來(lái)表示。還可以在這些域中使用逗號(hào)“,”,例如你希望星期一和星期四運(yùn)行某個(gè)作業(yè),只需要使用1,4來(lái)表示。可以用星號(hào)*來(lái)表示連續(xù)的時(shí)間段。如果你對(duì)某個(gè)表示時(shí)間的域沒(méi)有特別的限定,也應(yīng)該在該域填入*。該文件的每一個(gè)條目必須含有5個(gè)時(shí)間域,而且每個(gè)域之間要用空格分隔。該文件中所有的注釋行要在行首用#來(lái)表示。crontab條目舉例
3021***/apps/bin/cleanup.sh
上面的例子表示每晚的21:30運(yùn)行/apps/bin目錄下的cleanup.sh。4541,10,22**/apps/bin/backup.sh
上面的例子表示每月1、10、22日的4:45運(yùn)行/apps/bin目錄下的backup.sh。101**6,0/bin/find-name"core"-execrm{}上面的例子表示每周六、周日的1:10運(yùn)行一個(gè)find命令。0,3018-23***/apps/bin/dbcheck.sh
上面的例子表示在每天18:00至23:00之間每隔30分鐘運(yùn)行/apps/bin/目錄下的dbcheck.sh。
023**6/apps/bin/qtrend.sh
上面的例子表示每星期六的11:00pm運(yùn)行/apps/bin目錄下的qtrend.sh。
致謝:感謝您的耐心閱讀!
新聞熱點(diǎn)
疑難解答
圖片精選