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