我想要一个持续监视命名管道输入的守护进程,然后创建两个文件:一个包含所有通过命名管道的数据,另一个包含它的过滤版本。
当我从命令行运行此命令时,它按预期工作,$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/