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

标签 linux bash rhel

这个问题可能已经有人问过,也可能没有人问过,我在任何地方都找不到它,而且我是一个 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/

相关文章:

javascript - 使用node child_process.exec执行top命令时如何解决错误?

python - 如何为 gdb 安装 python 调试信息?

Linux如何启动 "sftp-server"?

linux - linux中的中断处理

linux - 从 SSH 安装 sSMTP

c - 我如何检查c程序中的目录是否存在并在不存在时创建它

rhel - 无法向订阅管理器注册 - 'NoneType' 对象没有属性 '__getitem__'

c# -/usr/share/dotnet/sdks/microsoft.docker.sdk/sdk/sdk.props 找不到

c - 艰难调试神秘的git+ssh+proxy失败 "bash: No such file or directory"

bash - 惯用的 bash : set default value for variable