本文主要是介绍利用kill命令实现程序的故障自愈,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
相信看到kill这个单词,因为译意的原因,大家脑海中会联想到一些不好的画面,但是在Linux中,kill命令也有一些比较实用的功能,它可以用来终止一些执行中的程序,也可以用来给某个程序发送指定信号,对指定进程进行相应操作,还可以通过一些小技巧实现程序的故障自愈,先介绍一下在Linux中的一些常用的kill命令用法
总结如下:
kill –l 查看kill命令信号列表
kill PID 终止进程(kill在不指定信号的情况下默认15信号,终止进程)
kill -1 PID 刷新进程,重读配置文件(程序更改之后不需要退出重启程序,发送1信号就可以更新程序)
kill -2 PID 终止正在运行的进程,相当于ctrl+c
kill -9 PID 强制关闭程序,但是程序被强制关闭后会残留一些垃圾信息,还可能会导致数据丢失,一般情况下不建议用
kill -18 PID 继续运行
kill -19 PID 后台休眠
killall cmd 终止在多个窗口运行的指定程序
kill -0:是个特殊信号,探测程序运行是否正常
如果信号是0,则不发送实际信号,但仍会实现错误检查
kill -0的作用就是用来检查错误,比如给某个程序发送kill -0信号,如果程序运行异常就会返回一个非0的状态码,运行正常则返回0的状态码
当然也可以用来探测网站服务,就是所谓的故障自愈,例如:nginx
执行命令killall -0 nginx &> /dev/null ||systemctl restart nginx
意思就是,如果这个nginx运行正常,则把返回结果信息扔进 /dev/null(黑洞,垃圾箱),如运行异常则重启nginx
我们可以把这条命令代码写到脚本里面,设定探测时间,执行脚本之后系统定时监控网站服务运行是否正常,异常则自动重启,但是有一个小bug,killall -0检查不是特别精准,它只能检查程序是否在进程里,如果在则0,不在则非0,但是程序在进程里不一定是运行状态,也可能是stop状态,这样的话网站肯定访问异常,因此killall -0检查也可能会判断失误,所以这个方法要结合自己的实际情况来使用哦。
这篇关于利用kill命令实现程序的故障自愈的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!