将stdout重定向到文件并添加时间戳

时间:2014-07-17 00:19:01

标签: shell scripting

我发现这个脚本(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脚本会不断运行并且不会终止。有谁知道如何解决这个问题?

2 个答案:

答案 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