linux - 检测进程何时退出或由于内存不足而被杀死

标签 linux bash

我的 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/

相关文章:

bash - Bash 子字符串替换 ${foo/a/b} 的 Shell 通用等价物

Bash - 计算一个文件夹中所有 mp3 文件的长度

c - 为什么我的多线程程序有时会阻塞?

linux - 不能添加超过 2 个变量

python - 如何在运行命令时使用加载 gif

linux - 在 bash shell 中转义空间

php - .htaccess 在 linux 服务器上不工作

linux - 在文件的最后一行之前添加三行新行

linux - ping 网站期间会发生什么?有哪些阶段?

linux - 网络摄像机 : open source software for recording H. 264