在允许运行一段时间后终止进程

yae*_*ael 13 linux task-manager parallel-processing

我想限制grep允许进程命令运行或处于活动状态的时间。

例如。我想执行以下操作:

grep -qsRw -m1 "parameter" /var
Run Code Online (Sandbox Code Playgroud)

但在运行grep命令之前,我想限制grep进程的生存时间,比如不超过 30 秒。

我该怎么做呢?

如果可以,我如何返回或重置为没有时间限制。

小智 12

您可以使用timelimit,它在默认的 ubuntu 中可用,或者您可以自己编译。

timelimit执行命令并在给定信号的给定时间后终止生成的进程。首先发送“警告”信号,然后在超时后发送“终止”信号,类似于 init(8) 在关闭时的操作方式。

  • 它不在我的 Ubuntu(10.10 桌面,11.04 服务器)中,所以可能不是默认设置。但是可以通过快速的“sudo aptitude install timelimit”轻松掌握。安装后效果很好。 (2认同)

Wal*_*ndt 7

这里有一些稍微有点hackish的bash:

grep -qsRw -m1 "parameter" /var &

GREPPID=$!

( sleep 30; kill $GREPPID ) &

fg $GREPPID
Run Code Online (Sandbox Code Playgroud)

基本上,它在后台开始搜索,然后启动一个等待 30 秒的子 shell,然后终止搜索过程。如果搜索时间小于 30 秒,则该进程将已经死亡。杀死一个已经死的进程并不是一个好主意,因为其他东西重用 pid 的可能性很小,但对于这样的事情,它通常没问题。最后,搜索被放回前台并一直运行直到它完成或被终止。