在bash中,如何在特定时间后停止命令

在bash中,如何在特定时间后停止命令,bash,Bash,在bash中,我运行带有文本输出的iftop工具。它是一个监控网络并在标准输出中定期写入结果的工具(默认情况下是终端,但可能是其他东西,一个文件)。它在前台运行,直到我用ctrl+C 我想让它运行一段时间(例如1分钟),然后自动停止进程 我怎样才能在bash中制作这个 以下是我已经尝试过的: sudo-iftop-nNPt-L 100-i wlp0s20f3>iftop.out&pid=$!;睡眠20;sudo kill$pid 但是,1)它不会终止进程,2)它不会重定向到文件我想您可以尝试将所

在bash中,我运行带有文本输出的
iftop
工具。它是一个监控网络并在标准输出中定期写入结果的工具(默认情况下是终端,但可能是其他东西,一个文件)。它在前台运行,直到我用
ctrl+C

我想让它运行一段时间(例如1分钟),然后自动停止进程

我怎样才能在bash中制作这个

以下是我已经尝试过的:

sudo-iftop-nNPt-L 100-i wlp0s20f3>iftop.out&pid=$!;睡眠20;sudo kill$pid


但是,1)它不会终止进程,2)它不会重定向到文件

我想您可以尝试将所有内容放在下一行的
&
之后。为此,您必须将整个命令放在
.bashrc
或脚本中的函数中:

sudo iftop-nNPt-L 100-i wlp0s20f3>iftop.out&
pid=$!;睡眠20;sudo kill$pid

我想你可以试着把所有内容放在下一行的
&
后面。为此,您必须将整个命令放在
.bashrc
或脚本中的函数中:

sudo iftop-nNPt-L 100-i wlp0s20f3>iftop.out&
pid=$!;睡眠20;sudo kill$pid

在Linux中使用timeout命令应该可以工作,语法如下:


timeout[OPTION]DURATION命令[ARG]…
在Linux中使用timeout命令应该可以工作,语法如下:


timeout[OPTION]DURATION命令[ARG]…

是否输出到stderr而不是stdout?至于“一段时间后停止”,请看一下。谢谢,我不知道这个功能。我试过了,它似乎符合我的要求@本杰明。这是对的。您可以找到有关超时的良好信息,您可以使用
&>
将stdout和stderr重定向到一个文件。对于timeout,就像其他人提到的,
timeout
是简单且最好的。输出是否会转到stderr,而不是stdout?至于“一段时间后停止”,请看一下。谢谢,我不知道这个功能。我试过了,它似乎符合我的要求@本杰明。这是对的。您可以找到有关超时的良好信息,您可以使用
&>
将stdout和stderr重定向到一个文件。对于超时,正如其他人提到的,
timeout
是简单且最好的。