文档章节

LINUX定时检查程序运行状态

闪电
 闪电
发布于 2015/06/13 10:02
字数 752
阅读 66
收藏 1

当初偶那么一不小心,不知怎么给PHP配了个和MySQL版本不匹配的so文件,于是我的数据库就经常因为某些兼容问题挂吖挂吖挂吖。。。动不动MySQL服务就会挂掉,但我又不知道该怎么搞出正确的库,所以只好搞这么一个时刻检查服务是否正确运行的办法来折中一下…

要让检查脚本自动定时执行,我们需要cron,linux里应该都自带了。然后我们需要一个检查脚本,来检查程序是否正在执行,如果不在执行,则启动它。

这里我已经写好了一个

#!/bin/sh
c=`ps -ef | grep 'mysql' |grep -v grep |wc -l`
if [ $c -eq 0 ]
then
    echo "MySQL is not running,starting it."
    echo `service mysql start`
    echo ""
else
    echo "MySQL running!"
fi
 
c=`ps -ef | grep 'apache2' |grep -v grep |wc -l`
if [ $c -eq 0 ]
then
    echo "Apache2 is not running,starting it."
    echo `service apache2 start`
    echo ""
else
    echo "Apache2 running!"
fi
 
c=`ps -ef | grep 'sshd' |grep -v grep |wc -l`
if [ $c -eq 0 ]
then
    echo "SSH is not running,starting it."
    echo `service sshd start`
    echo ""
else
    echo "SSH running!"
fi
 
echo "Service checked done!"

这是一个检查apache2,mysql和ssh三个重要服务的脚本,当发现程序不在运行,脚本就会启动服务。

然后我们要定时来执行这个检查脚本,以前我一直以为cron是个很难用的东西,网上的教程里全都是星星******。。。今天才发现其实用法也很简单(不需要很高级的定时任务的情况下)。
星星都是通配符,匹配任何条件。
我们执行crontab -u 用户名 -e来编辑用户的定时任务,一般来说为了保证任务有权限运行我们都用root用户。如下

crontab -u root -e

接着就会打开vi编辑器,编辑器会打开一个文档,那就是root用户的定时任务文件,要定什么时就直接写在里面保存即可,cron会自动检查并执行到期的任务。

编辑器出现后我们要插个新行并写上我们的任务,任务格式是这样

分钟 小时 一个月里第几天 月份 一周里第几天 要执行的命令

前面的时间部分的值用*代替表示任意此单位的时间都会执行,还有种写法,就是每过多少个单位这样的时间执行一次,如下

*/1 * * * * echo 'miao'

这表示每1分钟执行一次,同理如果第一个位置是*/2的话就是每两分钟执行一次。

现在我们要每一分钟检查一次我们的服务是不是都在正常的运行,所以就写上这么一个任务

*/1 * * * * sh 检查脚本的路径



然后按esc键再:wq保存即可,定时任务就会定时执行了。祖国再也不用担心我的博客老是“数据库连接错误”了。

本文转载自:http://blog.luojia.me/2014/12/14/linux%E5%AE%9A%E6%97%B6%E6%A3%80%E6%9F%A5%E7%A8%8B%E5%BA%8F%E8%B...

闪电
粉丝 74
博文 392
码字总数 6789
作品 0
海淀
技术主管
私信 提问
Linux安全隐患及如何加强其安全管理

世界上没有绝对安全的系统,即使是普遍认为稳定的Linux系统,在管理和安全方面也存在不足之处。我们期望让系统尽量在承担低风险的情况下工作,这就要加强对系统安全的管理。 下面,我具体从两...

红薯
2009/05/07
301
0
Linux系统安全隐患及加强安全管理的方法

世界上没有绝对安全的系统,即使是普遍认为稳定的Linux系统,在管理和安全方面也存在不足之处。我们期望让系统尽量在承担低风险的情况下工作,这就要加强对系统安全的管理。 下面,我具体从两...

JavaGG
2009/05/07
239
0
如何检查 Linux 中的开放端口列表?

最近,我们就同一主题写了两篇文章。这些文章内容帮助你如何检查远程服务器中给定的端口是否打开。 如果你想 检查远程 Linux 系统上的端口是否打开 请点击链接浏览。如果你想 检查多个远程 ...

作者: Magesh Maruthamuthu
04/17
0
0
Linux工具命令之crontab

前言 在平时工作中,我们经常需要执行一些定时任务。 比如我的电脑每天晚上都会在凌晨1点开始sync代码,并执行编译。4点又会sync另一份代码。执行另一个编译任务。这无疑会提高我们白天的工作...

Anderson大码渣
2018/10/14
0
0
如何在 Linux 终端下检查笔记本电池状态

在图形界面下查看你的笔记本电池状态是很容易的,只需将鼠标指向任务栏中的电池图标上,你便可以很容易地知道电池的电量。但如果我们想要从命令行中获得这些信息呢?并不是所有人都知道如何做...

06%
2018/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rsync工具常用选项以及同步的两种方式

rsync -av /etc/passwd /tmp/1.txt #rsync的本机传输写法 rsync -av /tmp/1.txt 192.168.188.128:/tmp/2.txt #rsync的远程传输rsync格式rsync [OPTION] … SRC ......

林怡丰
今天
3
0
GatewayWorker 报错:stream_socket_server(): unable to connect to tcp://0.0.0.0:1238

GatewayWorker 报错:stream_socket_server(): unable to connect to tcp://0.0.0.0:1238 (Address already in use) 官方文档虽然有相同的问题,但是对我的问题没起作用…… 后面发现自己手贱...

wenzhizhong
昨天
3
0
REST接口

文章来源 https://zhuanlan.zhihu.com/p/28674721?group_id=886181549958119424 http://www.ruanyifeng.com/blog/2014/05/restful_api.html REST 对请求的约定 REST 用来规范应用如何在 HTTP......

Airship
昨天
6
0
Spring Cloud Config 统一配置中心

Spring Cloud Config 统一配置中心 一、统一配置中心 统一管理配置 通常,我们会使用配置文件来管理应用的配置。如一个 Spring Boot 的应用,可以将配置信息放在 application.yml 文件中,如...

非摩尔根
昨天
6
0
android ------ AAPT2 error: check logs for details解决方法

AAPT 是全称是 Android Asset Packaging Tool,它是构建 App,甚至是构建 Android 系统都必不可少的一个工具。它的作用是将所有资源文件压缩打包到Android APK 当中。我们在 Android SDK 目录...

切切歆语
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部