精华内容
下载资源
问答
  • linux下自动重启进程脚本

    千次阅读 2018-10-26 11:09:54
    1.如何利用shell脚本判断进程是否在运行,若没有运行则立即运行; 2.利用nohup后台运行判断脚本; 3.如何查看并杀死后台进程;   0.背景大纲 最近,在国外买了个服务器,因为是OPENVZ架构,所以找了篇帖子搭建...

    本文大纲:

    0.背景故事-程序自动崩溃下无奈找办法自动检测重启;

    1.如何利用shell脚本判断进程是否在运行,若没有运行则立即运行;

    2.利用nohup后台运行判断脚本;

    3.如何查看并杀死后台进程;

     

    0.背景大纲

    最近,在国外买了个服务器,因为是OPENVZ架构,所以找了篇帖子搭建了SSR+BBR的通道,以下是帖子地址:

    OpenVZ架构VPS安装BBR的五种方法(UML/LKL/LKL_Rinetd) | 可乐博客

    但是,两天后,我的SSR莫名连接不上了,手动重装了系统,重新配置了SSR,但是两天后,事情又发生了。于是,我怀疑是我的VPS内存空间的问题,我的空间本来就小,128M内存,能跑BBR已经不错了。于是,我开始想办法让SSR崩溃后重新连接,下面是我找到的一个办法,shell脚本判断进程。

     

    1.shell判断进程脚本怎么写

    #!/bin/sh
    date >> ssrcron.txt
    echo "the shell is running" >> ssrcron.txt
    while :
    do
    stillRunning=$(ps -ef |grep SCREEN |grep -v "grep")
    if [ -z "$stillRunning" ]
    then
    date >> ssrcron.txt
    echo "the screen was closed!!!!!!!!!!!!!!!!!" >> ssrcron.txt
    sh ./run.sh start
    date >> ssrcron.txt
    echo "the screen was started!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> ssrcron.txt
    fi
    sleep 10
    done

    以上是代码

    运行脚本:sh ssrcron.sh

     

    2.利用nohup命令后台运行脚本

    当你使用sh方式运行脚本的时候,如果关闭终端,那么进程也会随之中断。这时候,就需要让进程在后台保持运行,我的办法是利用nohup命令:

    命令:nohup sh ssrcron.sh

    这个命令会自动在本文件夹下生产nohup.out,你的sh ssrcron.sh的命令的输出会打印在里面。

     

    3.如何查看并杀死后台进程

    当你想关闭nohup进程的时候,可以使用ps -ef,来找到进程,如图:

    杀进程命令:kill -9 [pid],如我要杀死途中进程,我的命令是:kill -9 11986,回车。

     

     

    展开全文
  • Linux平台 下 进程监控自动 重启 恢复脚本, 测试 centos平台下 java, springboot 通过
  • Linux重启tomcat脚本

    千次阅读 2017-10-26 10:06:28
    定时重启tomcat脚本: 经过测试,脚本有可能将自身的进程搜索出来结果kill掉了,可以将关键词更具体化”tomcat/conf”,这样就可以避免查找到自身的脚本进程了 循环关闭和启动: #!/bin/bash echo "######...

    定时重启tomcat脚本:
    经过测试,脚本有可能将自身的进程搜索出来结果kill掉了,可以将关键词更具体化”tomcat/conf”,这样就可以避免查找到自身的脚本进程了
    循环关闭和启动:

    #!/bin/bash
    echo "#########starting##########" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
    echo `date` >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
    #before stop tomcat   Monitor memory, CPU and other data
    top -n 1 -b >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
    #stop tomcat
    sh /home/tomcat/bin/shutdown.sh
    
    count=0
    
    while  ps -ef|grep "tomcat/conf"|grep -v grep|grep -v -q PPID; do
        echo "waiting $count seconds tomcat stop" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
        sleep 1
        ((count++))
        if (( $count > 10 )); then
            echo "break 10s reached. stop tomcat failed,so kill the tomcat pid" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
            #kill
            PROCESS=`ps -ef|grep "tomcat"|grep -v grep|grep -v PPID|awk '{ print $2}'`
            for i in $PROCESS
            do
                    echo "Kill the $1 process [ $i ]" >>/root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
                    kill -9 $i
            done
         fi
    done
    
    echo 'tomcat stop status has been confirmed. start tomcat' >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
    #before start tomcat   Monitor memory, CPU and other data
    top -n 1 -b >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
    echo 'start_tomcat' >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
    
    #start tomcat
    sh /home/tomcat/bin/startup.sh
    
    count=0  
    while ! netstat -anp | grep -q "0.0.0.0:8080" ; 
    do
        echo "waiting $count seconds of tomcat starting" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
        sleep 1
        ((count++))
        if (( $count > 10 )); then 
            echo "break 10s  reached.server start  again" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
            sh /home/tomcat/bin/startup.sh
            sleep 10
        fi   
    done
    
    
    if netstat -anp | grep -q "0.0.0.0:8080" ; 
    then 
        echo "server is running" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
    else
        echo "server failed to start" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
    fi
    echo `date` >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log

    脚本1:

    #!/bin/bash
    echo "#########starting##########" >> /root/restart_tomcat.log
    echo `date` >> /root/restart_tomcat.log
    #关闭tomcat前   监控CPU、内存使用率:
    top -n 1 -b | grep -E '^[[:alpha:]]' >> /root/restart_tomcat.log
    #stop tomcat
    sh /home/tomcat/bin/shutdown.sh
    
    #kill
    PROCESS=`ps -ef|grep "tomcat"|grep -v grep|grep -v PPID|awk '{ print $2}'`
    for i in $PROCESS
    do
      echo "Kill the $1 process [ $i ]"
      kill -9 $i
    done
    
    echo 'stop tomcat' >> /root/restart_tomcat.log
    #启动tomcat前   监控CPU、内存使用率:
    top -n 1 -b | grep -E '^[[:alpha:]]' >> /root/restart_tomcat.log
    #sh /home/tomcat/bin/startup.sh
    cd /home/tomcat/bin
    echo 'start_tomcat' >> /root/restart_tomcat.log
    ./startup.sh
    
    echo `date` >> /root/restart_tomcat.log
    echo "server start  success" >> /root/restart_tomcat.log

    脚本2:

    #!/bin/bash
    
    if netstat -anp | grep -q "0.0.0.0:8080" ; then
        echo "server is running...stop"
    #    service tomcat7 stop
    else
        echo "server is not running..."
    fi
    
    netstat -anp | egrep "8080|8009|8005"
    ps -ef | grep  'tomcat' | grep -v grep | awk '{print $2}'
    ps -ef | grep  'tomcat' | grep -v grep | awk '{print $2}' | xargs kill -kill
    ps -ef | grep  'tomcat' | grep -v grep | awk '{print $2}'
    
    service tomcat7 start
    
    count=0
    while ! netstat -anp | grep -q "0.0.0.0:8080" ; do
        echo "waiting $count seconds of tomcat starting"
        sleep 1
        ((count++))
        if (( $count > 60 )); then
            echo "break 1 minutes reached"
            break;
        fi
    done
    
    if netstat -anp | grep -q "0.0.0.0:8080" ; then
        echo "server is running"
    else
        echo "server failed to start"
    fi

    脚本3:

    #!/bin/bash
    echo "#########starting##########" >> /root/restart_tomcat.log
    echo `date` >> /root/restart_tomcat.log
    
    #stop tomcat
    sh /home/tomcat/bin/shutdown.sh
    
    #kill
    #kill -s 9 `ps -ef | grep tomcat7.8100 | grep -v grep | awk '{print?$2}'`
    for pid in `ps -ef | grep  'tomcat' | grep -v grep | awk '{print $2}'` ;
    do
          kill -9 "${pid} "
    done
    
    echo "tomcat stop status has been confirmed. start tomcat" >> /root/restart_tomcat.log
    
    #sh /home/tomcat/bin/startup.sh
    cd /home/tomcat/bin
    echo "cd /home/tomcat/bin" >> /root/restart_tomcat.log
    ./startup.sh
    
    echo `date` >> /root/restart_tomcat.log
    echo "server start  success" >> /root/restart_tomcat.log
    

    脚本4:

    #!/bin/bash
    echo "#########starting##########" >> /root/restart_tomcat.log
    echo `date` >> /root/restart_tomcat.log
    if netstat -anp | grep -q "0.0.0.0:8080" ; then
        echo "server is running...stop" >> /root/restart_tomcat.log
        service tomcat7 stop
    else
        echo "server is not running..." >> /root/restart_tomcat.log
    fi
    
    count=0
    
    while netstat -anp | grep -q "0.0.0.0:8080" ; do
        echo "waiting $count seconds tomcat stop" >> /root/restart_tomcat.log
        sleep 1
        ((count++))
        if (( $count > 600 )); then
            echo "break 10 minutes reached. stop tomcat failed". >> /root/restart_tomcat.log
        fi
    done
    
    echo "tomcat stop status has been confirmed. start tomcat" >> /root/restart_tomcat.log
    
    service tomcat7 start
    
    count=0
    while ! netstat -anp | grep -q "0.0.0.0:8080" ; do
        echo "waiting $count seconds of tomcat starting" >> /root/restart_tomcat.log
        sleep 1
        ((count++))
        if (( $count > 60 )); then
            echo "break 1 minutes reached" >> /root/restart_tomcat.log
            break;
        fi
    done
    
    if netstat -anp | grep -q "0.0.0.0:8080" ; then
        echo "server is running" >> /root/restart_tomcat.log
    else
        echo "server failed to start" >> /root/restart_tomcat.log
    fi
    echo `date` >> /root/restart_tomcat.log

    问题:
    当添加Ehcache缓存时,tomcat虽然端口关闭了,但进程并未关闭!

    优化之处:
    关闭tomcat端口后需要监测进程是否被kill掉

    展开全文
  • linux 关闭进程脚本

    千次阅读 2019-04-25 17:00:35
    linux 关闭进程脚本说明代码 说明 在写完 start.sh 脚本的时候, 很经常的 需要重启服务器,就需要关闭服务器再启动, 一般的就是 按照 命令ps -ef |grep java … 去找到对应的进程号 在kill -9 ${proid}, 很烦… ...

    linux 关闭进程脚本

    说明

    在写完 start.sh 脚本的时候, 很经常的 需要重启服务器,就需要关闭服务器再启动, 一般的就是 按照 命令ps -ef |grep java … 去找到对应的进程号 在kill -9 ${proid}, 很烦…
    下面的代码 就实现了 自己写一个shutdown 关闭进程
    具体的逻辑为

    1. ps -ef |grep ${关键字} 找出自己程序可以唯一找到的关键字
    2. 找到后检索出进程号kill -9 ¥{proid}

    代码

    #1. 定义关键字查询进程信息
    findstr=`echo "jar test-gradle-jar-1.0-SNAPSHOT.jar"`
    #2. 查询进程信息保存于proids 
    
    ps -ef|grep '${findstr}' |grep -v 'grep'|awk '{print $2}'
    i=0
    for proid in `ps -ef|grep "${findstr}"|grep -v 'grep' |awk '{print $2}'`
    do 
     
        proids[$i]=$proid
        let i=$i+1
    done
    
    #3. 判断proids的数据 
    if [ ${#proids[*]} -eq 0 ]; 
    then
        echo "not find proid"
    elif [ ${#proids[*]} -eq 1 ]; 
    then
        kill -9 ${proids[0]}
        echo "proid[${proids[0]}] was killed"
    else
        for proid in ${proids[@]}
        do
            if [ $proidstr ];
            then
                proidstr="$proidstr,$proid" 
            else
                proidstr="$proid"
            fi
            
        done 
        echo "存在多条进程[${proidstr}], 请查询后再删除"
    fi
     
    
    
    
    展开全文
  • resin linux 重启脚本

    2012-01-05 10:26:09
    resin linux 重启脚本,包括进程杀死,端口检测等
  • linux进程监控重启shell脚本

    千次阅读 2017-08-30 09:05:49
    shell poll监控重新运行,挂了则重启程序 前段时间工作需要使用python+scrapy写了个新闻舆情爬虫系统,服务器上面跑了大概5个月,期间莫名其妙的挂了2~3次。最终决定使用shell一直监控指定的进程,如果没有运行,则...

    本文主要内容:

    • shell日志date format
    • shell poll监控重新运行,挂了则重启程序

    前段时间工作需要使用python+scrapy写了个新闻舆情爬虫系统,服务器上面跑了大概5个月,期间莫名其妙的挂了2~3次。最终决定使用shell一直监控指定的进程,如果没有运行,则重新启动重新。

    相信监控重新是否运行,如果重新意外挂了,需要对重新重新启动这个场景应该十分常见吧,(下面是shell的log截图)
    这里写图片描述
    下面是shell脚本
    下面的shell中test_process=”[p]ython.*nohup_restart_test_py” 之所以加上 [] [p]yth… 是为了不kill shell的本身的grep程序,当然一般会加上 grep -v grep来排除掉本身shell的grep, 但是我觉得加上[]更方便点

    #!/bin/bash
    #restart scrape news process if the process exited accidentally
    
    log_file="restart_sh.log"
    
    # return the current date time
    TIMESTAMP(){
        echo $(date "+%Y-%m-%d %H:%M:%S")
    }
    
    stop_process_if_running(){
        # $1->process_name to grep
        echo $(ps -ef | grep $1)
        be_running=$(ps -ef | grep $1 | wc -l)
        if [ $be_running -gt 0 ]
        then
            echo "$(TIMESTAMP) $1 is running, T'm going to kill it"
            ps -ef | grep "$1" | awk '{print $2}' | xargs kill -9
            if [ $? -eq 0 ];
            then
                echo "kill $1 successfully!!!"
            fi
        else
            echo "$(TIMESTAMP) $1 is not running"
        fi
    }
    
    restart_process_if_die(){
        # $1->process_name by grep, $2->python directory
        # $3->process python file name
        echo "paras is: $@"
        be_running=$(ps -ef | grep $1 | wc -l)
        if [ $be_running -eq 0 ];
        then
            echo "$(TIMESTAMP) $3 got down, now I will restart it" | tee -a $log_file
            cd $2
            echo "Now I am in $PWD"
            nohup python $3 & 2>&1
            if [ $? -eq 0 ];
            then
                echo "$(TIMESTAMP) $3 restart successfully" | tee -a $log_file
            fi
            cd -
        else
            echo "$(TIMESTAMP) $3 is running, no need to restart"
        fi
    }
    
    test_process="[p]ython.*nohup_restart_test_py"
    file_dir=/home/xiongyu/search_start_sh/
    py_file=nohup_restart_test_py.py
    #when execute this shell script, if the process is running,kill it firstly
    stop_process_if_running $test_process
    
    # poll if the process is died, if got died then restart it.
    while :
    do
        restart_process_if_die $test_process $file_dir $py_file
        echo "$(TIMESTAMP) now I will sleep 10S"
        sleep 10
    done
    展开全文
  • Linux重启脚本

    2020-09-29 17:41:00
    编辑上传的脚本; # 5. 找到对应的进程; # 6. 杀死对应的进程; # 7. 运行启动脚本; vDate=`date +%Y%m%d%H%m` mv qit-server.jar qit-server.jar.$vDate mv package/qit-server-1.0.Snapshot.jar qit-server....
  • linux 进程自动重启检测脚本

    千次阅读 2010-03-29 12:02:00
    例子主要实现的功能为: 通过检测systest.sh 进程是否存在,并且进程数只能为1个,如果该进程数不为1或没有运行,则会在3秒内自动重启脚本。大家可以调整sleep 为1 和修改需要检测的进程名和路径,可以实现自己的...
  • linux查进程,杀进程,重启进程

    千次阅读 2016-09-02 21:19:29
    linux查进程,杀进程,重启进程今天在查看php脚本的执行情况时,发现脚本重写编码保存后,shell脚本执行时,并没有执行更新过的内容;通过手动执行脚本后,发现脚本更新的内容正常的被运行。 查找原因后,发现原来...
  • Linux Shell脚本 实现发现进程,杀死进程,重启进程 实现代码: #!/bin/bash NAME="provider-integral" #想要杀死的进程 PORT="8081" PROCESS="../jars/provider-integral-0.0.1-SNAPSHOT.jar" LOGDIR=".....
  • linux定时重启jboss脚本

    2017-10-31 09:23:21
    实现定时对Linux操作系统下的jboss应用进行定时重启重启规则中包含了动态杀死进程服务和重新启动jboss应用
  • Shell脚本源码如下:按进程名杀死线程 #!/bin/sh #根据进程名杀死进程 if [ $# -lt 1 ] then echo "缺少参数:procedure_name" exit 1 fi PROCESS=`ps -ef|grep $1|grep -v grep|grep -v PPID|awk '{ print...
  • linux自动重启脚本

    千次阅读 2019-06-05 10:06:45
    linux自动重启脚本 2018年08月17日 23:27:47JarunWang阅读数:1563 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rth362147773/article/details/81784360 前言 服务器每个几个...
  • linux中用shell脚本重启某个进程

    千次阅读 2018-06-26 16:30:19
    /bin/bash其中 grep -v grep是过滤grep的进程,如果不写则会有两个pid和直接在Linux系统中的效果不一样。pid=`ps -ef | grep java |grep -v color |grep -v grep | awk '{print $2}'`echo "java pid is ${pid}&...
  • linux shell脚本监控进程崩溃自动重启

    千次阅读 2017-06-08 16:13:52
    linux shell脚本监控进程崩溃自动重启,由于目前有Python实现的通讯组件时不时会异常中断,在还没有找到问题的解决办法时先暂时用shell监控并自动重启处理。 # ! /bin/shbasepath=$(cd `dirname $0`; pwd)while true...
  • linux运维中,我们经常希望自己运行的脚本能够打印相应的日志,以便出现问题方便排查,shell脚本最简单的打印日志就是把代码运行的结果不断的写入一个文件中去,通过重定向(>>)实现。同时我们也希望能够监控...
  • 1. 先关闭之前启动的进程 ps -ef|grep xxx|grep java|awk ‘{print $2}’|xargs kill -9 其中xxx 为要关闭的进程标识 2. 启动应用 以启动jar为例: nohup java -jar xxx.jar -Dspring.config.location=xxx/...
  • Linux脚本实现进程监控与重启 1. 监控进程脚本monitor.sh #!/bin/sh device_router_cmd_line='./device_router localhost 1883' mosquitto_cmd_line='./mosquitto -d' da...
  • #!/bin/bash while [ 1 ] do process_is_exstit=$(ps -ef | grep "yourProcess" | grep -v grep | wc -l) if [ ${process_is_exstit} == 0 ] ... echo '程序重启中' sleep 300 #enter your exec...
  • 我们需要写一个进程监控的脚本,目的是检测tomcat进程是否停掉,如果挂了,自动拉起,所以我们写了如下的脚本,参考了一些资料,希望对有需要的人有所帮助。   #!/bin/bash echo "Start" URL=...
  • 主要为大家分享一个监控linux进程的shell脚本,当程序异常退出时可以自动重启,涉及到捕获进程信号与重启进程的命令与知识
  • 我们需要写一个进程监控的脚本,目的是检测tomcat进程是否停掉,如果挂了,自动拉起,所以我们写了如下的脚本,参考了一些资料,希望对有需要的人有所帮助。 #!/bin/bash echo "Start" URL=...
  • Linux下不用杀进程直接重启tomcat脚本

    千次阅读 2016-12-15 18:01:51
    basedir:服务器tomcat的位置 说明:使用方法,项目不是放在webapp目录下的啊,工具是winScp 1、将war解压开之后的东西全部...3、./restart.sh 回车就会自己删日志,请缓存并重启 4、访问页面,就发现更新上去了。哈哈
  • Linux守护进程Shell脚本

    千次阅读 2016-09-28 14:19:55
    服务端程序一般需要长期后台...现分享一个简单的Shell脚本的方式: #! /bin/sh #进程名字可修改 PRO_NAME=xxxx while true ; do #用ps获取$PRO_NAME进程数量 NUM=`ps aux | grep -w ${PRO_NAME} | grep -v g

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 91,342
精华内容 36,536
关键字:

linux重启进程脚本

linux 订阅