還要循環(huán)啊,傳入時(shí)間參數(shù)啊
創(chuàng)新互聯(lián)建站長期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為臨武企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì),臨武網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
我最近寫了一個(gè)FTP自動(dòng)化下載文件的script,你可以參考下:
#!/bin/sh
#==============================================================================#
# 功能描述:標(biāo)準(zhǔn)輸出日志
# 作者:
# 返回值: 輸入帶當(dāng)前運(yùn)行時(shí)間的標(biāo)準(zhǔn)格式的日志信息
# 說明:
# 輸入 日志信息
#
#
#==============================================================================#
_Msg()
{
v_sTime=`date +"%Y%m%d %H:%M:%S"`
echo "${v_sTime} $1" |tee -a -i ${v_sLogFile}
return 0
}
#==============================================================================#
# 功能描述:休眠
# 作者: Created by PW at 2015/11/11
# 返回值:
# 說明:
# 輸入休眠時(shí)間
#
#
#==============================================================================#
_Sleep()
{
v_iSleepTime=$1
#if -z 如果字符串為空
if [ -z "${v_iSleepTime}" ]
then
v_iSleepTime=60
fi
sleep ${v_iSleepTime}
}
#==============================================================================#
# 功能描述:斷開數(shù)據(jù)庫
# 作者:
# 返回值:
# 說明:
#==============================================================================#
_DBClose()
{
db2 terminate 21 /dev/null
_Msg " 斷開數(shù)據(jù)庫"
return 0
}
#*********************************************主程序******************************#
#初始化參數(shù)
#FTP到本機(jī)的目錄(本機(jī)數(shù)據(jù)存放目錄)
v_sTargetPath=/home/almusr/data/odsdata/FTP
#FTP服務(wù)器
FTPSERVER=100.0.2.230
#FTP用戶和密碼
FTPUSER=tomcat
FTPPASSWORD=tomcat
#FTP之前數(shù)據(jù)存放目錄
FTPDIR=/home/tomcat/test
#FTP完成OK標(biāo)志生成目錄和date_record.txt的存放路徑
FTPOK_DIR=/home/almusr/data/etl_load/FTPOK
#cd到date_record.txt所在路徑下
cd "${FTPOK_DIR}"
#獲取時(shí)間參數(shù)v_sFileDate
v_date=`cat date_record.txt | tail -1`
echo "${v_date}"
#獲取加載完成與否的標(biāo)志Y or N
v_sRunFlag=`echo "${v_date}" | cut "-b10"`
#判斷如果是Y就截取加載日期,否則就繼續(xù)掃描等待
while true
do
if [[ ${v_sRunFlag} = Y ]]; then
#獲取加載日期,先截取v_date的前八位,然后再加 1 就是本次加載的數(shù)據(jù)日期
v_sFileDate_1=`echo "${v_date}" | cut "-b1-8"`
v_sFileDate=`date -d "+1 day ${v_sFileDate_1}" +%Y%m%d`
echo "${v_sFileDate}"
_Msg "DATE:${v_sFileDate}"
#日志路徑
v_sLogDir=/home/almusr/log
#日志名字
v_sLogFile="${v_sLogDir}/ftp_${v_sFileDate}/ftp_${v_sFileDate}.log"
#數(shù)據(jù)文件列表
v_sFtpGetLst="${v_sTargetPath}/${v_sFileDate}/${v_sFileDate}.lst"
_Msg "###########################$FILEDATE###########################"
_Msg "ftp data of ${v_sFileDate}"
#創(chuàng)建日志目錄
#-d 如果不存在目錄${v_sLogDir}
if [ ! -d "${v_sLogDir}/ftp_${v_sFileDate}" ]
then
#創(chuàng)建日志路徑,以日期命名
mkdir -p "${v_sLogDir}/ftp_${v_sFileDate}"
fi
#創(chuàng)建FTP下日期目錄
#-d 如果不存在目錄${v_sTargetPath}/${v_sFileDate}
if [ ! -d "${v_sTargetPath}/${v_sFileDate}" ]
then
#創(chuàng)建ETL路徑,以日期命名
mkdir -p "${v_sTargetPath}/${v_sFileDate}"
fi
#檢查日期OK標(biāo)志是否存在
while true
do
#cd到FTP下的日期目錄
cd ${v_sTargetPath}/${v_sFileDate}
if [[ ! -e "${v_sTargetPath}/${v_sFileDate}/${v_sFileDate}_OK.flag" ]]; then
_Msg "Data file is ok and start to get it."
#獲取服務(wù)器文件名清單
if [ -f "${v_sFtpGetLst}" ]; then
rm -f ${v_sFtpGetLst}
fi
ftp -v -in DOF
open $FTPSERVER 21
user $FTPUSER $FTPPASSWORD
cd $FTPDIR/${v_sFileDate}
#將該文件夾下所有文件名都寫到文件${v_sFtpGetLst}里面
ls *.* ${v_sFtpGetLst}
bye
DOF
#查詢文件名清單中是否有 ok標(biāo)志
v_sEndFlag=`cat "${v_sFtpGetLst}" | grep -i "${v_sFileDate}_OK.flag"`
echo "${v_sEndFlag}"
#if [ -n ${v_sEndFlag} ]如果${v_sEndFlag}非空(非0),返回0(true)
if [[ -n ${v_sEndFlag} -s ${v_sFtpGetLst} ]];
then
_Msg "Data file is ok and start to get it."
#傳輸數(shù)據(jù)文件、產(chǎn)生成功標(biāo)志文件
_Msg "ftp data file"
if [ ! -d "${v_sTargetPath}/${v_sFileDate}" ]
then
mkdir -p "${v_sTargetPath}/${v_sFileDate}"
else
cd ${v_sTargetPath}/${v_sFileDate}
fi
#cd到FTP目錄,F(xiàn)TP過去取數(shù)據(jù)文件
#cd ${v_sTargetPath}/${v_sFileDate}
ftp -v -in FOF
open $FTPSERVER 21
user $FTPUSER $FTPPASSWORD
cd $FTPDIR/${v_sFileDate}
binary
mget *.*
bye
FOF
#創(chuàng)建下載完成標(biāo)志
touch "${FTPOK_DIR}"/${v_sFileDate}.ok
cd "${FTPOK_DIR}"
#將跑數(shù)日期和跑數(shù)標(biāo)志(已跑Y,沒跑N)寫入date_record.txt
echo "${v_sFileDate}|Y" date_record.txt
break;
else
_Msg "Data file does not exist, sleep 18000 seconds and then check it again."
sleep 18000
fi
fi
done
exit 0
break;
else
_Sleep "1800"
fi
done
exit 0
#####################################################
我的腳本里面采用了初始txt文本傳入初始時(shí)間,然后判斷是否生成加載標(biāo)志*.ok文件,再定時(shí)掃描,加載完成生成加載完成標(biāo)志,自動(dòng)化調(diào)腳本可以在linux系統(tǒng)下設(shè)置一個(gè)定時(shí)任務(wù),命令:crontab -l 定時(shí)任務(wù)列表, crontab -e 定時(shí)任務(wù)編輯
linux下一般都是.so結(jié)尾的擴(kuò)展
win下是dll
不通用
而且最好是重新編譯 編譯的時(shí)候加上這些參數(shù)
在 上一篇 中我們簡要介紹了 LSF 作業(yè)管理系統(tǒng),下面將介紹 SLURM 資源管理系統(tǒng)。
SLURM (Simple Linux Utility for Resource Management)是一種可用于大型計(jì)算節(jié)點(diǎn)集群的高度可伸縮和容錯(cuò)的集群管理器和作業(yè)調(diào)度系統(tǒng),被世界范圍內(nèi)的超級(jí)計(jì)算機(jī)和計(jì)算集群廣泛采用。SLURM 維護(hù)著一個(gè)待處理工作的隊(duì)列并管理此工作的整體資源利用。它以一種共享或非共享的方式管理可用的計(jì)算節(jié)點(diǎn)(取決于資源的需求),以供用戶執(zhí)行工作。SLURM 會(huì)為任務(wù)隊(duì)列合理地分配資源,并監(jiān)視作業(yè)至其完成。如今,SLURM 已經(jīng)成為了很多最強(qiáng)大的超級(jí)計(jì)算機(jī)上使用的領(lǐng)先資源管理器,如天河二號(hào)上便使用了 SLURM 資源管理系統(tǒng)。
下面是一些最常用的 SLURM 命令:
下表是 SLURM 環(huán)境變量:
SLURM 資源管理系統(tǒng)的管理對(duì)象包括:節(jié)點(diǎn),分區(qū),作業(yè)和作業(yè)步。
SLURM 系統(tǒng)有三種作業(yè)運(yùn)行模式:
交互模式作業(yè)的使用過程為:
例如使用 srun 申請(qǐng) 4 個(gè)進(jìn)程生成一個(gè)作業(yè)步:
批處理模式作業(yè)的使用過程為:
下面給出作業(yè)腳本示例:
用以下命令提交批處理作業(yè):
分配模式作業(yè)的使用過程為:
分配模式通過 salloc 命令運(yùn)行,舉例如下(使用 2 個(gè)節(jié)點(diǎn),4 個(gè)進(jìn)程,預(yù)計(jì)運(yùn)行時(shí)間 100 秒):
資源分配請(qǐng)求成功后會(huì)進(jìn)入 bash shell 終端,在其中可以使用 srun 交互式地執(zhí)行作業(yè)任務(wù)。在終端輸入 exit 命令或 Ctrl+D 退出分配模式。
天河二號(hào)上使用的是 SLURM 資源管理系統(tǒng),不過天河二號(hào)上使用的 SLURM 命令都是將標(biāo)準(zhǔn)的 SLURM 命令開頭的 s 改成了 yh,如下:
以上介紹了 SLURM 資源管理系統(tǒng),在 下一篇 中我們將介紹 MPI-3 的新特性。