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