如何在Bash中给定实际运行时间之后杀死进程?

时间:2018-02-05 21:41:34

标签: linux bash unix server

为了在Bash中给定超时后终止进程,有一个名为timeout的好命令。但是,我在多用户服务器上运行我的程序,并且我不希望我的程序的性能受到其他人的影响。在程序真正运行的给定时间之后,有没有办法在Bash中杀死进程?

1 个答案:

答案 0 :(得分:2)

在Bash + Linux上,您可以使用ulimit -t。这是来自help ulimit

 -t        the maximum amount of cpu time in seconds

以下是一个例子:

$ time bash -c 'ulimit -t 5; while true; do true; done'
Killed

real    0m8.549s
user    0m4.983s
sys     0m0.008s

无限循环过程在被杀之前被安排(即实际运行)总共5秒。由于其他进程同时竞争CPU,这需要8.5秒的挂起时间。

sleep 3600这样的命令永远不会被杀死,因为它不使用任何CPU时间。