linux - 在后台运行时 tee 命令不起作用

标签 linux bash grep daemon tee

我想要一个持续监视命名管道输入的守护进程,然后创建两个文件:一个包含所有通过命名管道的数据,另一个包含它的过滤版本。

当我从命令行运行此命令时,它按预期工作,$ACTIONABLE_LOG_FILE 被创建为 $LOG_FILE_BASENAME 的过滤版本:

cat $NAMED_PIPE | tee -a "$LOG_FILE_BASENAME" | grep -P -v "$EXCEPTIONS" >> "$ACTIONABLE_LOG_FILE" &

但是当我让以下代码在后台运行时,没有任何内容会附加到 $ACTIONABLE_LOG_FILE:

while true
do
   cat $NAMED_PIPE | tee -a "$LOG_FILE_BASENAME" | grep -P -v "$EXCEPTIONS" >> "$ACTIONABLE_LOG_FILE" &
   wait $!
done

文件 $ACTIONABLE_LOG_FILE 已创建,但没有附加任何内容。这是怎么回事?

最佳答案

我怀疑当守护进程时,您没有完整的可用环境,因此没有 $PATH。命令的完整路径(可能是 /usr/bin/tee)可能会有很大帮助。您可以使用 which tee 在本地确认。

关于linux - 在后台运行时 tee 命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32236258/

相关文章:

linux - “chattr +A”似乎不会抑制访问时间更新

linux - 对文本文件中的每一行进行排序

bash - 如何从 tcl 脚本调用 bash 命令?

bash - 修改引号内的内容,BASH

Linux下使用grep命令

linux - 目录要求全部拒绝不工作

linux - 在共享主机上为 32 位 linux 编译 git

c - 你应该释放传递给 prctl() 的内存吗?

linux - awk 计数模式匹配并对它们之后的数字求和

bash - grep 后 grep : No such file or directory