这个问题可能已经有人问过,也可能没有人问过,我在任何地方都找不到它,而且我是一个 Linux 初学者。
我有一个在我的 RHEL 4 服务器上运行的 ./start.sh 脚本,每隔一秒发送一次跟踪输出。示例:跟踪:服务器正在别名 1、2 等上运行...它用于确保服务器没有退出。
我需要运行我的一些 DDoS 保护工具和扫描器,因为它们是同时运行的。尽管由于所有跟踪输出,我永远看不到发生了什么!
我将如何暂时禁用输出,因为它已经在运行,同时保持它在后台运行,然后运行我的工具,然后在我完成后再次重新启用输出?
最佳答案
我可以看到两种解决方案:
- 使用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
。那里缓冲自己输出的任何命令都不会受到影响,但它可能会有所帮助。
关于linux - 如何暂时隐藏正在运行的 bash 脚本的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18524285/