Bash运行命令一定时间?


12

我正在制作bash脚本供我使用。如何在特定时间(例如20秒)内运行命令并终止命令?我尝试了很多解决方案,但没有任何效果,我还尝试了超时命令,但均未成功。请给我一些解决方案。

例如:我想在10秒后在脚本和终端中运行此命令

some command

Answers:


14

嗯,这应该可以解决问题:

xmessage "Hello World" &
pidsave=$!
sleep 10; kill $pidsave

xmessage在此处提供一个快速测试用例(在您的情况下,airodump命令应放在此处);&将其放入背景。

$!保存上一次启动的进程的PID(请参阅例如/programming//a/1822042/2037712);PID被保存到变量中pidsave

等待一段时间(sleep)后,向TERM过程发送信号。


谢谢好友,它的工作原理,但现在我有1个问题。我想查看由命令创建的输出,但xmessage窗口未显示任何内容。
Umair Riaz

@UmairRiaz:xmessage只是一个例子。为了适应问题中的示例并记录命令的输出,请some command > logfile &在第一行中使用。之后,您可以进行分析logfile
mpy

4

在bash提示中,您可以使用“


1

另一种方法是使用pgrep $ pattern或pkill $ pattern; 在机器上所有正在运行的进程中查找,返回与给定模式匹配的所有PID。因此,要将PID的范围限制为仅属于您自己的PID,请使用:pgrep -P $ mypid $ pattern或pkill -P $ mypid $ pattern

因此,要在指定的时间段内运行后台进程,您的脚本应如下所示:

#!/bin/bash 
mypid=$$
run_something &
sleep $time_in_seconds
pkill -P $mypid something

请记住,这将杀死在当前父PID下运行的具有相同名称模式的所有进程。因此,您可以使用它来启动多个进程,并在一定时间后同时杀死所有进程。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.