美文网首页
关于linux服务器守护应用进程

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

作者: 邪恶的正派 | 来源:发表于2019-09-25 18:58 被阅读0次

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

    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服务器守护应用进程

          本文链接:https://www.haomeiwen.com/subject/apdwuctx.html