Day: December 8, 2021
-
-
yum 安装报错 error: rpmdb: BDB0113 Thread/process 8487/139945176586304 failed: BDB1507 Thread died in Berkeley DB library
error: rpmdb: BDB0113 Thread/process 8487/139945176586304 failed: BDB1507 Thread died in Berkeley DB libraryerror: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recoveryerror: cannot open Packages index using db5 – (-30973)error: cannot open Packages database in /var/lib/rpmCRITICAL:yum.main: Error: rpmdb open failed 原因是RPM数据库被破坏,重建数据库后恢复正常:cd /var/lib/rpm/for i in ls | grep ‘db.’;do mv $i $i.bak;donerpm –rebuilddbyum clean…
-
判断服务是否正常运行
怎么判断moneyslow.com是否正常正常呢?如果是我肉眼判断的话,我直接打开moneyslow.com的主页,比如http://moneyslow.com:4873,如果能看到页面内容则说明服务正常,如果看到”无法访问次网站“等字样则说明服务挂掉了。为了实现自动化的监控和重启,我们必须通过脚本程序来做,在此我们可以通过curl命令来获取http://moneyslow.com:4873页面的响应码,如果返回200则说明服务正常,否则服务挂掉了。我们使用curl命令的参数-I只显示响应头。然后通过判断响应头中是否包含HTTP/1.1 200 OK字样来检查服务是否正常。因此就有了以下程序: header=curl -I http://moneyslow.com:4873if [[ $header =~ ‘HTTP/1.1 200 OK’ ]]; thenecho ‘ok’elseecho ‘not ok’fi通过以上代码我们就可以监控服务是否正常了,我们再来拓展一下思路,其实我们还可以通过检查moneyslow.com服务进程是否存在来判断moneyslow.com服务正常与否。怎么判断进程是否存在呢?这里不再详细介绍,请参考一下代码: 查询有几个进程占用了4873端口 count=lsof -ti :4873 | wc -lif [[ $count -ne 0 ]]; thenecho ‘ok’elseecho ‘not ok’fi第二种方案不如第一种直观,我仍然把它写出来主要是提醒各位多多思考,不要拘泥于某一种方案。接下来我们仍然采用第一种更加直观的方案继续进行。 服务挂了以后自动重启在上一节中我们已经能够检查服务是否正常了,在这一节中我们要实现的是自动重启服务,这个就非常简单了,想想我们是怎么启动moneyslow.com的,嗯,我们是在控制台中输入一下命令,nohup moneyslow.com &,其中nohup让命令永远执行下去,即使用户退出也没有关系,&让程序在后台运行。两者结合起来就可以程序永久地在后台运行。 header=curl -I http://moneyslow.com:4873if [[ $header =~ ‘HTTP/1.1 200 OK’ ]]; thenecho ‘ok’;else# 重启服务nohup moneyslow.com &fi定期监控服务运行状况通过前面两个步骤我们已经写出一个脚本,它会检查服务是否正常运行,如果服务挂掉了就会重启。这还是这个检查工作是一次性的,需要我们不停地执行脚本。当然可以通过crontab命令(以后再介绍)实现,不过在这里我们将通过写一个死循环逻辑来实现每隔一段时间来检查服务是否正常运行。 while truedoheader=curl -I http://moneyslow.com:4873if…