【发布时间】:2015-07-30 19:39:27
【问题描述】:
我正在读取写入各种文件的本地文件夹,如果文件匹配模式,我将通过第二个脚本 (transfer_file.sh) 将这些文件发送到远程服务器,如果传输是成功完成(通过 SCP)然后我使用 rsync 将处理后的文件移动到本地文件夹作为本地备份,使用 --remove-source-files 标志从监控文件夹。可能是有大量文件正在传输,因此 rsync 尚未完成,在第一个循环完成睡眠后,它可能会重试发送已在前一个循环中读取的文件。如何取消列出或不处理已传递给 transfer_file.sh 的文件?我增加了睡眠时间,但需要一个更干净的解决方案,以防我突然处理了数百个文件。
if [ -d $MONITOR_FOLDER ] ; then
while [ 1 ]; do
echo "$(date +%c) monitor() |Main| Monitoring local repository"
for LOG_FILE in `ls $MONITOR_FOLDER$LOG_PATTERN 2> /dev/null`
do
sh transfer_file.sh $LOG_FILE &
done
sleep 10
done
fi
【问题讨论】: