我们通过ssh登录服务器或者开发机,但如果服务器发生OOM,将sshd进程kill了怎么办呢?
事实上OOM时kill进程虽然是按照进程占用的内存及占用时间来kill的,但由于了进程的占用内存也会算到父进程上,sshd被kill也会常常发生。
这个时候大家可能想到用socket去实现重启sshd进程,但下次又kill了怎么办呢?如果服务器特别多怎么办呢?操作会变的很烦琐,我们的OP就遇到这种问题,报给我们解决。事实上可以用initd去托管,如果被kill了initd会负责重新起起来的。具体怎么实现呢?下面就直接用脚本给出,大家运行下就OK了。原理看了code自然就很明了了。
grep '7:3:respawn:/usr/sbin/sshd -D' /etc/inittab >/dev/null
if [ $? -eq 0 ];then
chkconfig --level 3 sshd off && /etc/init.d/sshd stop && telinit q
fi
其实就是修改initab文件啦。然后就会发现,不管怎么kill,sshd进程都会重启,你也不会再丢失对服务器的控制权啦。