我有一个大的日志文件,每小时都会被cron复制到/ var / log /。几分钟后,logrote通过压缩和重命名开始工作。
我的问题是,复制过程尚未完成。结果是,复制的日志文件和归档文件已损坏。
所以我想要的是一个shell脚本,该脚本对复制的文件进行查看,然后检查它是否在使用中。
#!/bin/bash
until err_str=$(lsof /var/log/logfile.txt 2>&1 >/dev/null); do
if [ -n "$err_str" ]; then
# lsof printed an error string, file may or may not be open
echo "lsof: $err_str" >&2
# tricky to decide what to do here, you may want to retry a number of times,
# but for this example just break
break
fi
# lsof returned 1 but didn't print an error string, assume the file is open
sleep 1
done
这行不通,怎么了?
答案 0 :(得分:0)
您可以尝试使用-
而err_str = $(lsof /var/log/logfile.txt 2> / dev / null);做 如果[-z“ $ err_str”];然后