你如何暂时隐藏正在运行的bash脚本的输出?

时间:2013-08-30 03:09:54

标签: linux bash rhel

这个问题可能已经或可能没有被提出过,我无法在任何地方找到它。我有点像Linux初学者。

我有一个在我的RHEL 4服务器上运行的./start.sh脚本,每隔一秒发送一次跟踪输出。示例:跟踪:服务器在别名1,2等上运行...它是为了确保服务器没有退出。

我需要运行一些DDoS保护工具和扫描仪,因为它同时运行。虽然我无法看到因为所有的跟踪输出而发生了什么!

我如何暂时禁用输出,因为它已经运行,同时保持它在后台运行然后运行我的工具然后当我再次重新启用输出时?

1 个答案:

答案 0 :(得分:1)

我可以看到两种解决方案:

  • 使用screen(最好)或
  • 使用重定向和tail

例如:

$ stdbuf -oL ./start.sh > /tmp/start.sh.log &
$ tail -f /tmp/start.sh.log

执行此操作后,您可以在终端中看到日志消息。您可以杀死tail而不受惩罚,并在您想要查看消息时再次启动它。当日志文件太大时,您可以使用以下命令将其缩短为零

$ echo -n > /tmp/start.sh.log

Bash的重定向可以无缝地处理文件突然被截断。不确定这是否适用于所有shell。如果您的shell出现问题,可以插入tee

我将stdbuf -oL添加到“鼓励”shell脚本到行缓冲区stdout。那里缓冲自己输出的任何命令都不会受到影响,但它可能会有所帮助。