#!/ic/software/tools/anaconda/Anaconda3-2021.05/python_bin/python
import os
import time
import sys
import numpy as npif len(sys.argv) > 1 : print("##################################################################################")print(f"#### Wait {len(sys.argv)-1} Files! ####")print("##################################################################################")
else:print("ERROR: no file to wait! Please define waited file or files!")exit()files = sys.argv[1:]
fileNames = np.array([])
originalTimes = np.array([])for index,filename in enumerate(files):fileNames=np.append(fileNames,filename)if os.path.exists(filename):originalTimes = np.append(originalTimes,os.path.getmtime(filename))print(f"==> file{index}: {filename} wait touch.")else:originalTimes = np.append(originalTimes,0)print(f"==> file{index}: {filename} wait create.")print("\n")
print("pds_wait_files:",fileNames)
print("\n")while(True):nowTimes = np.array([])for index,filename in enumerate(files):if os.path.exists(filename):nowTimes = np.append(nowTimes,os.path.getmtime(filename))else:nowTimes = 0 if np.all(nowTimes>originalTimes):breaktime.sleep(5)
print("#####################################################################################")
print("### All Files touched at ",time.strftime("%Y-%m-%d %H:%M:%S %A",time.localtime()))
print("#####################################################################################")
使用该脚本可以wait flag,直到flag创建或被touch,否则一直等待。当所有文件被创建或touch,该段程序完成,即可继续执行后续操作。
例如:
pds_wait_files xxx.flag xxx.flag1 xxx.flag2
source fix.tcl
当xxx.flag xxx.flag1 xxx.flag2时间戳更新后,source fix.tcl。