如何从输出到前景的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脚本运行无限循环的主要内容,如果未能解决你的问题,请参考以下文章