2

这个问题可能已经被问过,也可能没有被问过,我在任何地方都找不到它,而且我有点像 Linux 初学者。

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

我需要运行我的一些 DDoS 保护工具和扫描程序,因为它们是同时运行的。尽管由于所有跟踪输出,我永远看不到发生了什么!

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

4

1 回答 1

1

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

  • 使用屏幕(最好),或
  • 使用重定向和tail.

例如:

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

完成此操作后,您可以在终端中看到日志消息。您可以不受惩罚地杀死tail并在您想查看消息时重新启动它。当日志文件变得太大时,您可以使用以下命令将其缩短为零:

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

Bash 的重定向可以无缝地处理文件突然被截断。不确定这是否适用于所有贝壳。tee如果这成为您的 shell 的问题,您可以进行干预。

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

于 2013-08-30T03:47:07.777 回答