我发现这个脚本(How to add timestamp to STDERR redirection)重定向脚本/程序的stdout / stderr并添加时间戳:
#!/bin/bash
while read line ; do
echo "$(date): ${line}"
done
使用此脚本(predate.sh)时
./MyApp | predate.sh > out.log
它工作得很好,但是当MyApp崩溃或被杀死时,predate.sh脚本会不断运行并且不会终止。有谁知道如何解决这个问题?
答案 0 :(得分:1)
可能存在缓冲问题。我认为这对你有用:
producer | stdbuf -oL gawk '{print strftime("%F %T"), $0}' > out.log
答案 1 :(得分:0)
向read
添加超时,如果超时,请检查MyApp是否正在运行,如果没有则退出,如果是则再次读取。
read -t 1 line
if [ $? -eq 1 ]; then
# Timeout - check MyApp ruuning
ps ... | grep MyApp ...
fi