linux服务器挂掉自动重启脚本(转)

实现原理主要是使用linux提供的crontab机制,定时查询服务器进程是否存在,如果宕机则执行我们预设的重启脚本。

首先我们要向crontab加入一个新任务

sudo crontab -e #进入编辑状态,选用vi编辑。

*/1 * * * * sh /root/monitor.sh  #添加每分钟检测

我这里只是简单的设置每分钟调用一个shell脚本monitor.sh。这里可以配置的更强大,大家可以去搜索一下crontab的教程,网上有很多这类的教程。
这里需要注意的是,很多教程配置command的时候直接使用/root/monitor.sh,我设置的时候发现这样配置不会执行shell脚本,前面加上sh后就能执行了。
然后我们开始写monitor.sh这个shell脚本。

#! /bin/sh    

proc_name="run_cloudweb.py"        #进程名  

proc_num()                      #查询进程数量
{
    num=$(ps -ef | grep $proc_name | grep -v grep | wc -l)
    return $num
}  

proc_num
number=$?                       #获取进程数量
if [ $number -eq 0 ]            #如果进程数量为0
then                            #重新启动服务器,或者扩展其它内容。
    cd /usr/shineonStuido/cloudweb/
    sudo nohup python run_cloudweb.py &
fi

这个脚本,只是简单的检测了进程是否存在,不存在就自动重启服务器。

这里其实也可以扩展一下,比如对日志文件的处理以及重启时间等的记录等等。

到这里就OK了,可以杀掉进程,自行测试一下啦~

如果使用

num=`ps -ef | grep $proc_name | grep -v grep | wc -l`

则num为字符串,return $num时会出错提示return必须为数字

转自:https://blog.csdn.net/cocos2dGirl/article/details/80492843

原文地址:https://www.cnblogs.com/zl1991/p/10736375.html

时间: 2024-09-29 03:40:44

linux服务器挂掉自动重启脚本(转)的相关文章

windows2008设置IIS服务器定时自动重启的方法

我们在使用windows2008下IIS服务器时会经常出现资源耗尽的现象,运行一段时间下来就会出现访问服务器上的网站时提示数据库连接出错,重启IIS后网站又能正常访问了,这个问题可能困扰了很多站长朋友.青岛做网站经过不断的实践找到了一个比较笨,但是有效的方法,那就是设置windows2008IIS服务器定时自动重启,在Windows的任务计划中指定一个时间让 IIS服务器自动重启. 设置IIS服务器定时自动重启的方法:(这里我以Windows Server 2008为例) 1.首先开启Windo

Linux下Oracle自动备份脚本

#!/bin/bash export ORACLE_HOME=/usr/local/instantclient_11_2export PATH=$ORACLE_HOME:$PATHexport TNS_ADMIN=$ORACLE_HOME/network/adminexport LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH#export NLS_LANG='simplified chinese_china.ZHS16GBK'export NLS_LA

502 Bad Gateway 自动重启脚本

一个简单的脚本,用来监控502的,如果遇到502,自动重启PHP进程.适用于LNMP环境. 以下文件,存放于 /root 或其它目录: #!/bin/bash MY_URL="http://www.tarena.com.cn/" RESULT=`curl -I $MY_URL|grep "HTTP/1.1 502"` if [ -n "$RESULT" ]; then /etc/init.d/php-fpm restart fi 给予可执行权限:

Linux服务器设置自动同步时间

登录Linux服务器的时候,你可能发现与实际时间不一样,需要调整 安装ntpdate >yum install ntp 输入ntpdate time.nist.gov 其中 time.nist.gov 是一个时间服务器. 如此,设置时间OK了.

windows服务器和linux服务器ftp取数脚本

linux(ip假如为11.11.0.1)从linux(ip假如为11.11.0.2)那么需要在11.11.0.2上装vsftp也就是ftp服务端,在11.11.0.1装ftp客户端, 下载地址http://download.csdn.net/detail/u012209894/9537732 #!/bin/sh ######################################################################## # # 此即可手工执行脚本,需要传入执

linux服务器时间自动同步

最常用的是 rdate 服务 安装(centOs为例): yum install -y rdate 用法: rdate -s time-b.nist.gov 执行完以上方法时间就同步了.有的服务器隔一段时间时间就不准了,因此我们要添加定时任务自动同步 设置定时任务: 1.编辑任务文件 vim /etc/crontab 2.在该文件最后一行添加: */3 * * * * root rdate -s time-b.nist.gov 3.重启服务 service crond restart 原文地址:

查看Linux服务器网卡流量小脚本shell和Python各一例

有时我们需要较为实时的查看服务器上的网卡流量,这里我写了两个小脚本,一个用shell(先写的,一次只能查看一个网卡),另一个用Python(后写的,一次可查看多个网卡).脚本中都用了while true"死循环",每隔10s从"/proc/net/dev"中取一次值并根据10s内的差值计算10s内的平均带宽:按ctrl+c停止执行.脚本兼容centos6和7 两个脚本都不太复杂,而且脚本中注释也比较细致,所以我就不过多解释脚本内容了.直接上图上脚本: shell版-

查看Linux服务器网卡流量小脚本shell

有时我们需要较为实时的查看服务器上的网卡流量,这里我写了个shell小脚本.脚本中用了while true"死循环",每隔10s从"/proc/net/dev"中取一次值并根据10s内的差值计算10s内的平均带宽:按ctrl+c停止执行.脚本兼容centos6和7,脚本不太复杂,而且脚本中注释也比较细致,所以我就不过多解释脚本内容了. 注:1kb=8字节,1Mb=1024kb #!/bin/sh   if [ "$1" = ""

两台linux服务器器同步目录脚本

在集群环境中,在打补丁,或安装新软件后,经常需要同步目录. 下面我做了一个脚本,用于完成这个过程. 因为没有在两台机器间做ssh互信,因此,执行过程中需要输入远程机器密码. #!/bin/bash #author:wjf #date:2015/06/01 #desc:同步一台机器上的一个文件夹至远程机器,可用于集群环境中的代码同步 #使用限制:1.同步文件夹路径中不允许出现空格 # 2.远程机器中同步文件夹的上层路径必须手动检查建立 v_tongbu_dir=/tmp/wjf/ #-------