如何从输出到前景的Bash脚本运行无限循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从输出到前景的Bash脚本运行无限循环相关的知识,希望对你有一定的参考价值。

所以,我想从bash脚本运行以下命令并将其输出到shell,但是,我的所有尝试都会导致脚本在后台运行:

while [ 1 ]; do timeout -k9 21600 sngrep -c -O "/var/log/sngrep/sngrep_capture_$(date +%F-%H-%M-%S).pcap"; sleep 1; done

当我直接在shell提示符下运行命令时,它按预期输出。应用程序SNGREP使用指定的参数启动并运行良好。

我已经尝试将命令发送到Screen,但它仍然在后台结束。我也尝试先通过睡眠修改命令(如下所示):

while sleep 1; do timeout -k9 21600 sngrep -c -O "/var/log/sngrep/sngrep_capture_$(date +%F-%H-%M-%S).pcap"; done

它也会进入后台,但如果我直接在shell提示符下输入它,那么运行正常。当从bash脚本运行时,我还可以尝试将命令输出到前台?任何帮助表示赞赏,谢谢。

PS。我的最终目标是在Windows批处理文件的Putty窗口中启动SNGREP。我已经把一切都运转了,但最后一点。

答案

从您的命令中不清楚它为什么在后台运行,而只应在前台运行。您可以尝试使用以下内容,始终将输出重定向(2>&1)到标准输出: -

  while [ 1 ]; do timeout -k9 21600 sngrep -c -O "/var/log/sngrep/sngrep_capture_$(date +%F-%H-%M-%S).pcap" 2>&1; sleep 1; done 

以上是关于如何从输出到前景的Bash脚本运行无限循环的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在无限循环中休眠的 python 脚本停止运行?

在bash中从循环执行python的输出

如何从sqlplus到bash脚本获取SQL查询输出

如何解决 bash 脚本中的错误以将负载加载到 cpu 上?

Apache Spark:从IDE远程运行作业时的无限循环

Bash参数解析逻辑陷入无限循环[重复]