关于linux服务器守护应用进程

之前公司在做项目测试的时候,处理了一个守护进程。现在,将守护进程的方法步骤分享。具体步骤如下:

  1. 实现原理:由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志。

  2. 先检查一下是否安装了crontab。一般情况下linux系统会自带crontab及crond。如果没有安装,请使用以下指令安装:yum install vixie-cron,yum install crontabs。如图所示:


    查询是否安装crontabs
  3. crontab执行定时(每隔30S执行一次)
    crontab –e
    在vi编辑器按i键输入
    */1 * * * * /mnt/test.sh
    */1 * * * * sleep 30 && /mnt/test.sh
    */1 * * * * sleep 60 && /mnt/test.sh
    按esc,shift+:,输入wq保存退出

  4. /mnt/test.sh 的实现,具体代码如下:

#! /bin/sh

host_dir=`echo ~`                                       # 当前用户根目录
proc_name="/home/hearken/jdk1.8.0_131/bin/java"                             # 进程名
file_name="/mnt/bindmonitor.log"                         # 日志文件
pid=0
echo "++++++++++++++++++++++++++++++++++++" >> $file_name

proc_num()                                              # 计算进程数
{
    num=`ps -ef | grep $proc_name | grep -v grep | wc -l`
    echo "计算进程数----"  >> $file_name
    echo $num, `date` >> $file_name
    return $num
}

proc_id()                                               # 进程号
{
    pid=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'`
    echo "进程id----" >> $file_name
    echo ${pid}, `date` >> $file_name
}

proc_num
number=$?
if [ $number -eq 0 ]                                    # 判断进程是否存在
then 
    JAVA_HOME=/home/hearken/jdk1.8.0_131
    CLASSPATH=$JAVA_HOME/lib/
    PATH=$PATH:$JAVA_HOME/bin
    export PATH JAVA_HOME CLASSPATH
    export PATH="/usr/local/python2.7/bin:$PATH"
    echo "重启进程" >> $file_name
    cd /home/hearken/jboss-JR/bin
    /usr/bin/nohup ./run.sh >>/mnt/1.txt 2>&1 &
    echo $?,"重启结果"  >> $file_name                                                # 重启进程的命令,请相应修改
    proc_id                                         # 获取新进程号
    echo ${pid}, `date` >> $file_name      # 将新进程号和重启时间记录
fi
  1. 开启crontab服务


    开启crontab服务

    启动服务成功,查看服务状态可使用systemctl status crond命令,也可以使用tail -f /var/log/cron查看打印的日志。

  2. 删除进程测试
    a、先使用ps –ef|grep named(named为进程名)命令查看进程,然后使用kill -9 id(id为进程号)杀掉进程
    b、5分钟后,cat /mnt/bindmonitor.log看看有无最新的记录,进程号与# ps -ef |grep named 进程号对应。

如果想开机自启动守护进程,只需要去编辑 /etc/rc.d/rc.local文件

vi /etc/rc.d/rc.local

如图所示,添加systemctl start crond.service保存退出,在重启服务器后将自动守护进程。


添加如图标记的代码

以上就是关于守护进程的方法。

你可能感兴趣的:(关于linux服务器守护应用进程)