当 运行 在后台时,tee 命令不起作用

tee command not working when run in background

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

当我从命令行 运行 此命令按预期工作时,$ACTIONABLE_LOG_FILE 被创建为 $LOG_FILE_BASENAME:

的过滤版本
cat $NAMED_PIPE | tee -a "$LOG_FILE_BASENAME" | grep -P -v "$EXCEPTIONS" >> "$ACTIONABLE_LOG_FILE" &

但是当我在后台留下以下代码 运行ning 时,没有任何内容附加到 $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.

确认