[英]Get return value of command run in background with pipe and tee command
[英]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" &
但是,当我在后台运行以下代码时,没有任何内容附加到$ 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
确认。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.