【问题标题】:How to kill a process after a given real running time in Bash?如何在 Bash 中给定的实际运行时间后终止进程?
【发布时间】:2018-02-05 21:41:33
【问题描述】:

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

【问题讨论】:

    标签: linux bash unix server


    【解决方案1】:

    在 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 秒的 wall time。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 2018-12-31
      相关资源
      最近更新 更多