【问题标题】:Redirect stdout to a file and add a timestamp将标准输出重定向到文件并添加时间戳
【发布时间】:2014-07-17 00:19:01
【问题描述】:

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

【问题讨论】:

    标签: shell scripting


    【解决方案1】:

    可能存在缓冲问题。我认为这对你有用:

    producer | stdbuf -oL gawk '{print strftime("%F %T"), $0}' > out.log
    

    【讨论】:

    • 谢谢,很遗憾我正在使用嵌入式设备,但 stdbuf 不可用
    【解决方案2】:

    为您的read 添加超时,如果超时,请检查 MyApp 是否正在运行,如果没有则退出,如果是则再次读取。

    read -t 1 line
    if [ $? -eq 1 ]; then
        # Timeout - check MyApp ruuning
        ps ... | grep MyApp ...
    fi
    

    【讨论】:

      猜你喜欢
      • 2016-10-04
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      相关资源
      最近更新 更多