在给定的实际运行时间后,如何杀死一个过程



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

在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时间。

最新更新