1. 腳本實例shell
將如下腳本保存爲 getftp.sh
bash
#!/bin/bash
datesign=`date -d -95day +%Y%m%d` ftp -nv 12.2.2.28 <<!FTPRUN user user01 user01 prompt
bin
cd TXT lcd /app/info/getftp mget ${datesign}*.txt bye !FTPRUN
腳本說明: 服務器
#!/bin/bash app
#代表該文本的內容爲SHELL命令 datesign=`date -d -95day +%Y%m%d` 編輯器
#聲明變量datesign,用來記錄須要獲取文件名中的日期標籤。 #-95day 表示距系統時間的天數,假現在天是20121123, #-2day就表示20121121。 測試
#%Y表示年,如2012,%y也表示年,可是格式爲12 #%m表示月,如11 #%d表示日,如23 spa
#一樣,%H,%M,%S分明表示時分秒, code
#以系統時間爲2012年11月23日10時55分44秒爲例 blog
#`date –d -2day +%Y-%m-%d %H:%M:%S` 的值爲:20121121 10:55:44 ftp -nv 12.2.2.28 <<!FTPRUN 進程
#登陸FTP服務器,12.2.2.28表示FTP服務器的IP地址
#從!FTPRUN至代碼結束的!FTPRUN是FTP命令。 #!FTPRUN是本身隨意給的標示名 user user01 user01
#給出FTP的用戶名和密碼。此處用戶名和密碼都是:user01 Prompt
#該命令忽略FTP交互 Bin
#二進制格式傳送 cd TXT
#TXT表示數據文件在FTP服務器上的目錄。 lcd /app/info/getftp
# /app/info/getftp數據文件要下載到服務器的目錄 mget ${datesign}*.txt
#須要下載的文件,${datesign}爲前面聲明的變量,*表示通配符 Bye
#FTP完成退出 !FTPRUN
2. 執行腳本使其定時調用
SHELL文件在執行時,可能會因存在特殊字符而出現問題。須要將 getftp.sh 文件轉換一下格式。 能夠直接在Linux下執行(假如不能運行則能夠賦予它執行的權限後在運行chmod +x ./getftp.sh):
DOS2UNIX /app/info/getftp/getftp.sh
/app/info/getftp爲 getftp.sh 腳本所在目錄。
經過vi編輯器根據實際環境對腳本進行相應更改,便可進行測試。 3. 自動執行配置 在Linux下執行:
Crontab –e * 5 * * * /app/info/getftp/getftp.sh
保存退出。代碼就會在天天5:00自動運行。
附:cron調度進程說明
cron是系統主要的調度進程,能夠在無需人工干預的狀況下運行做業。有一個叫作crontab的命令容許用戶提交、編輯或刪除相應的做業。每個用戶均可以有一個crontab文件來保存調度信息。可使用它運行任意一個shell腳本或某個命令,每小時運行一次,或一週三次,這徹底取決於你。每個用戶均可以有本身的crontab文件,但在一個較大的系統中,系統管理員通常會禁止這些文件,而只在整個系統保留一個這樣的文件。系統管理員是經過cron.deny和cron.allow這兩個文件來禁止或容許用戶擁有本身的crontab文件。
crontab的域
爲了可以在特定的時間運行做業,須要瞭解crontab文件每一個條目中各個域的意義和格式。
下面就是這些域: 第1列分鐘1~5 9
第2列小時1~2 3(0表示子夜) 第3列日1~3 1 第4列月1~1 2
第5列星期0~6(0表示星期天) 第6列要運行的命令 crontab的範例格式:
下面是c r o n t a b的格式:
分[]時[]日[]月[]星期[]要運行的命令 其中[]表示空格。
crontab文件的一個條目是從左邊讀起的,第一列是分,最後一列是要運行的命令,它位於星期的後面。在這些域中,能夠用橫槓-來表示一個時間範圍,例如你但願星期一至星期五運行某個做業,那麼能夠在星期域使用1 - 5來表示。還能夠在這些域中使用逗號「,」,例如你但願星期一和星期四運行某個做業,只須要使用1 , 4來表示。能夠用星號*來表示連續的時間段。若是你對某個表示時間的域沒有特別的限定,也應該在該域填入*。該文件的每個條目必須含有5個時間域,並且每一個域之間要用空格分隔。該文件中全部的註釋行要在行首用#來表示。 crontab條目舉例
30 21* * * /apps/bin/cleanup.sh
上面的例子表示每晚的21:30運行/apps/bin目錄下的cleanup.sh。 45 4 1,10,22 * * /apps/bin/backup.sh
上面的例子表示每個月一、1 0、2 2日的4:45運行/apps/bin目錄下的backup.sh。 10 1 * * 6,0 /bin/find -name "core" -exec rm {} 上面的例子表示每週6、週日的1:10運行一個find命令。 0,30 18-23 * * * /apps/bin/dbcheck.sh
上面的例子表示在天天18:00至23:00之間每隔30分鐘運行/apps/bin/目錄下的dbcheck.sh。
0 23 * * 6 /apps/bin/qtrend.sh
上面的例子表示每星期六的11:00pm運行/apps/bin目錄下的qtrend.sh。
致謝:感謝您的耐心閱讀!