我的 bash 脚本正在后台运行一些程序,并使用 wait 命令等待它停止。但是很有可能后台进程会因为太占内存而被kill掉。我希望我的脚本对温和结束的进程和终止的进程做出不同的 react 。如何检查此条件?
最佳答案
确保您的命令在成功时发出成功信号(退出代码为 0),在失败时发出失败信号(非零)。
当进程被 OOM killer 用 SIGKILL 杀死时,信号失败是自动的。 (shell 将信号终止进程的退出代码视为 128 + 信号编号,因此 SIGKILL 为 128+9=137)。
然后您使用 wait somepid
退出时使用与它在 if 语句中等待的命令相同的代码这一事实:
yourcommand &
pid=$!
....
if wait $pid
then
echo "It exited successfully"
else
echo "It exited with failure"
fi
关于linux - 检测进程何时退出或由于内存不足而被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17799815/