【问题标题】:Cygwin cigstart and mintty not writing tail -f piped to grep to fileCygwin cigstart 和 mintty 不写 tail -f 管道到 grep 到文件
【发布时间】:2022-01-27 03:45:47
【问题描述】:

我正在尝试创建一个运行进程的 .sh 文件,然后将一些日志记录输出写入单独的文件。除了让 cygwin 实际写入文件的方法之外,我几乎可以正常工作。以下两个都显示一个新的 cygwin 窗口,并且似乎遵循日志文件,但都没有写入输出文件:

cygstart tail -f ./logs/full-log.txt | grep --line-buffered "LOG_FILE:" > ./logs/lrp-log.txt
mintty tail -f ./logs/full-log.txt | grep --line-buffered "LOG_FILE:" > ./logs/lrp-log.txt

以下工作,但我想将其合并到我更大的脚本中,所以我需要某种方式让它在后台运行,以便我的脚本可以继续。

tail -f ./logs/full-log.txt | grep --line-buffered "LOG_FILE:" > ./logs/lrp-log.txt

【问题讨论】:

    标签: bash cygwin


    【解决方案1】:

    我怀疑

    cygstart tail -f ./logs/full-log.txt | grep --line-buffered "LOG_FILE:" > ./logs/lrp-log.txt
    

    意思是:

    { cygstart tail -f ./logs/full-log.txt; } | grep --line-buffered "LOG_FILE:" > ./logs/lrp-log.txt
    

    即你正在跑步:

    { cygstart tail } | grep
    

    而不是你想要做的事情:

    cygstart { tail  | grep }
    

    如果您只是想修改一个 shell 脚本以将 tail | grep 放在后台,那么这可能就是您真正需要的:

    ( tail -f ./logs/full-log.txt | grep --line-buffered "LOG_FILE:" > ./logs/lrp-log.txt; ) &
    

    【讨论】:

    • 谢谢,非常适合我想要做的事情。我采用了您建议的最后一个解决方案(通过将 & 放在行尾来在后台运行该过程)。
    猜你喜欢
    • 2011-07-17
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2021-09-11
    相关资源
    最近更新 更多