所以最近我注意到我有一个进程会随机崩溃并变成一个 PPID 为 1 (init) 的僵尸。有人告诉我,解决此问题的唯一方法是重新启动 PC(或将 SIGCHLD 发送到 init,据我所知,这是....冒险/无用。)
本质上,我想要做的是编写一个 bash 脚本,该脚本将只查找僵尸进程,如果有,则重新启动 PC。
目前,我使用这个脚本来监控进程本身:
ps auxw | grep ethminer | grep -v grep > /dev/null
if [ $? != 0 ]
then
sudo reboot
fi
Run Code Online (Sandbox Code Playgroud)
现在,当 ethminer 正在运行或未运行时,此脚本似乎可以正常工作;如果在进程表中没有看到 ethminer,它将重新启动机器,如果没有看到它,它什么也不做。
然而,(从我公认的松散理解)因为当进程变成僵尸时没有退出代码if [ $? != 0 ]不会得到任何输入,因此不会做任何事情。
无论如何我可以修复/修改这个脚本,让它做我想做的事吗?还是我在这里偏离了轨道?
谢谢!