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