我正在编写一个shell脚本,调用一些可以耗尽所有资源并有效杀死机器的程序。我必须防止这种情况发生。
我的想法是使用ulimit来设置资源限制(我第一次真的需要在实践中使用ulimit)但是我对有一个被杀死的进程的退出状态为0感到有些惊讶。
我的shell脚本如何限制资源并检测被shell杀死的进程,因为它超出了这个限制?
我正在使用bash,但任何评论都值得一读。
答案 0 :(得分:0)
超出其中一个ulimits的程序将因错误(例如文件描述符,进程外)或最终捕获信号(内存,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