使用bash while循环重定向s3 cp日志到单个文件失败,生成多份日志文件
问题解决说明
根因分析
你在循环内部每次执行aws s3 cp时都会重新执行date命令生成日志文件名,只要循环运行跨了分钟,date输出的时间戳就会变化,从而生成新的日志文件,导致原本要写入同一个文件的日志被拆分到了每分钟生成的新文件里。
修复代码
提前在循环外生成固定的日志文件名,整个脚本运行过程中只会使用这一个文件存储所有日志:
# 预先定义唯一日志文件路径 LOG_PATH="/shared_data/logs/logs-$(date +"%b-%d-%Y-%H-%M-%Z").log" while read SOURCE DESTINATION do # 所有输出都追加到预先定义的同一个日志文件 aws s3 cp "$SOURCE" "$DESTINATION" &>> "$LOG_PATH" done < output.tsv
额外优化提示
所有变量引用时添加双引号,可以避免路径中存在空格、特殊字符时命令执行异常。
内容的提问来源于stack exchange,提问作者mht.haque
相关产品推荐
相关产品推荐

