1

我正在编写一个 shell 脚本,它调用了一些可以耗尽所有资源并有效杀死机器的程序。我必须防止这种情况发生。

我的想法是使用 ulimit 来设置资源限制(我第一次在实践中真正需要使用 ulimit)但我有点惊讶于被杀死进程的退出状态为 0。

我的 shell 脚本如何限制资源并检测到一个进程被 shell 杀死,因为它超过了限制?

我正在使用 bash,但任何评论都值得一读。

4

1 回答 1

1

超过其中一个 ulimit 的程序要么因错误而终止(例如,文件描述符、进程不足)或最终捕获信号(内存、CPU 时间)。这意味着您只需测试相关程序的退出状态。

ulimit ...
program
xs=$?
case $xs in
 (0) ;; # all fine
 (*) if [ $xs -gt 127 ]; then
        echo caught a signal...
     else
        echo some error...
     fi
esac
于 2011-08-27T09:05:27.460 回答