精华内容
下载资源
问答
  • 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
     
    
    
    
    展开全文
  • Linux下使用shutdown.sh脚本关闭tomcat无法使得JVM关闭   近日在Linux中部署项目时发现服务无法启动,上一次出现这种问题是kill掉了相关进程,但是并未分析原因,这次又出现了这个问题,于是便分析了一下,分析的...

    Linux下使用shutdown.sh脚本关闭tomcat无法使得JVM关闭

     

    近日在Linux中部署项目时发现服务无法启动,上一次出现这种问题是kill掉了相关进程,但是并未分析原因,这次又出现了这个问题,于是便分析了一下,分析的基本原因如下:

    通过shutdown.sh脚本关闭tomcat时无法关闭JVM进程,导致JVM进程越来越多,占据了大量的内存空间,使得新程序在启动JVM时由于内存不够用而无法启动。

    以前的做法是使用命令kill掉占据的无用进程,我在改写了一下tomcat关闭脚本,每次在通过shutdown.sh脚本关闭tomcat时都会强制kill掉所有相关进程,如下:


    说明:笔者改写了tomcat bin目录下的catalina.sh文件中的stop部分,因为在关闭tomcat时,会匹配stop if语句,因此笔者便在该模块最后添加了kill进程的语句,

    elif [ "$1" = "stop" ] ; then

     

      shift

     

      SLEEP=5

      if [ ! -z "$1" ]; then

        echo $1 | grep "[^0-9]" >/dev/null 2>&1

        if [ $? -gt 0 ]; then

          SLEEP=$1

          shift

        fi

      fi

     

      FORCE=0

      if [ "$1" = "-force" ]; then

        shift

        FORCE=1

      fi

     

      if [ ! -z "$CATALINA_PID" ]; then

        if [ -f "$CATALINA_PID" ]; then

          if [ -s "$CATALINA_PID" ]; then

            kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1

            if [ $? -gt 0 ]; then

              echo "PID file found but no matching process was found. Stop aborted."

              exit 1

            fi

          else

            echo "PID file is empty and has been ignored."

          fi

        else

          echo "\$CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted."

          exit 1

        fi

      fi

     

      eval "\"$_RUNJAVA\"" $LOGGING_MANAGER $JAVA_OPTS \

        -Djava.endorsed.dirs="\"$JAVA_ENDORSED_DIRS\"" -classpath "\"$CLASSPATH\"" \

        -Dcatalina.base="\"$CATALINA_BASE\"" \

        -Dcatalina.home="\"$CATALINA_HOME\"" \

        -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \

        org.apache.catalina.startup.Bootstrap "$@" stop

     

      # stop failed. Shutdown port disabled? Try a normal kill.

      if [ $? != 0 ]; then

        if [ ! -z "$CATALINA_PID" ]; then

          echo "The stop command failed. Attempting to signal the process to stop through OS signal."

          kill -15 `cat "$CATALINA_PID"` >/dev/null 2>&1

        fi

      fi

     

      if [ ! -z "$CATALINA_PID" ]; then

        if [ -f "$CATALINA_PID" ]; then

          while [ $SLEEP -ge 0 ]; do

            kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1

            if [ $? -gt 0 ]; then

              rm -f "$CATALINA_PID" >/dev/null 2>&1

              if [ $? != 0 ]; then

                if [ -w "$CATALINA_PID" ]; then

                  cat /dev/null > "$CATALINA_PID"

                  # If Tomcat has stopped don't try and force a stop with an empty PID file

                  FORCE=0

                else

                  echo "The PID file could not be removed or cleared."

                fi

              fi

              echo "Tomcat stopped."

              break

            fi

            if [ $SLEEP -gt 0 ]; then

              sleep 1

            fi

            if [ $SLEEP -eq 0 ]; then

              echo "Tomcat did not stop in time."

              if [ $FORCE -eq 0 ]; then

                echo "PID file was not removed."

              fi

              echo "To aid diagnostics a thread dump has been written to standard out."

              kill -3 `cat "$CATALINA_PID"`

            fi

            SLEEP=`expr $SLEEP - 1 `

          done

        fi

      fi

     

      KILL_SLEEP_INTERVAL=5

      if [ $FORCE -eq 1 ]; then

        if [ -z "$CATALINA_PID" ]; then

          echo "Kill failed: \$CATALINA_PID not set"

        else

          if [ -f "$CATALINA_PID" ]; then

            PID=`cat "$CATALINA_PID"`

            echo "Killing Tomcat with the PID: $PID"

            kill -9 $PID

            while [ $KILL_SLEEP_INTERVAL -ge 0 ]; do

                kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1

                if [ $? -gt 0 ]; then

                    rm -f "$CATALINA_PID" >/dev/null 2>&1

                    if [ $? != 0 ]; then

                        if [ -w "$CATALINA_PID" ]; then

                            cat /dev/null > "$CATALINA_PID"

                        else

                            echo "The PID file could not be removed."

                        fi

                    fi

                    echo "The Tomcat process has been killed."

                    break

                fi

                if [ $KILL_SLEEP_INTERVAL -gt 0 ]; then

                    sleep 1

                fi

                KILL_SLEEP_INTERVAL=`expr $KILL_SLEEP_INTERVAL - 1 `

            done

            if [ $KILL_SLEEP_INTERVAL -lt 0 ]; then

                echo "Tomcat has not been killed completely yet. The process might be waiting on some system call or might be UNINTERRUPTIBLE."

            fi

          fi

        fi

      fi

      # Add by afei on 2016-12-09 start

      # find pid of /home/test/tomcat ,then kill force PIDS

      echo "Force kill PIDS begin:"

      ps -ef | grep /home/test/tomcat | grep -v grep | grep -v catalina.sh | awk '{print $2}' | xargs echo

      ps -ef | grep /home/test/tomcat | grep -v grep | grep -v catalina.sh | awk '{print $2}' | xargs kill -9

      echo "Force kill PIDS end!"

      # Add by afei on 2016-12-09 end

     

    elif [ "$1" = "configtest" ] ; then

     

    主要是语句“ps -ef | grep /home/test/tomcat | grep -v grep | grep -v catalina.sh |awk '{print $2}' | xargs kill -9”,意思是先根据关键字“/home/test/tomcat”找出匹配的tomcat开启的JVM进程,然后再过滤掉grep进程(执行该条命令的进程)和catalina.sh进程(执行catalina.sh脚本的进程),接着使用awk命令输出“ps -ef”的第二个输出参数信息(即PID),最后使用kill -9强制kill掉相应进程。

     

    附录

    参考资料:
    [1]. http://blog.csdn.net/u012599988/article/details/44458083

    [2]. http://blog.csdn.net/caicongyang/article/details/40041901

    [3]. http://blog.csdn.net/yohoph/article/details/41947623

    [4]. http://vekergu.blog.51cto.com/9966832/1623700

    [5]. http://han.guokai.blog.163.com/blog/static/1367182712010731149286/

     

    展开全文
  • 一 问题自己开发的程序,如何用shell 脚本实现 启动,关闭,重启,查看状态?二 方案myshell.sh#!/bin/shSERVICE="fm_tuoguan_shell"PROCESS_STATUS="fm"CMD="/developer/robot -s rpcs@node.abc....

    一 问题

    自己开发的程序,如何用shell 脚本实现 启动,关闭,重启,查看状态?

    二 方案

    myshell.sh

    #!/bin/sh

    SERVICE="fm_tuoguan_shell"

    PROCESS_STATUS="fm"

    CMD="/developer/robot -s rpcs@node.abc.com:9902/1234567 -p admin@cn888"

    start(){

    echo "starting..."

    nohup $CMD > $SERVICE.log 2>&1 &

    if [ $? -ne 0 ]

    then

    echo "start failed, please check the log!"

    exit $?

    else

    echo $! > $SERVICE.pid

    echo "start success"

    fi

    }

    stop(){

    echo "stopping..."

    kill -9 `cat $SERVICE.pid`

    if [ $? -ne 0 ]

    then

    echo "stop failed, may be $SERVICE isn't running"

    exit $?

    else

    rm -rf $SERVICE.pid

    echo "stop success"

    fi

    }

    restart(){

    stop&&start

    }

    status(){

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

    if [ $num -eq 0 ]

    then

    echo "$SERVICE isn't running"

    else

    echo "$SERVICE is running"

    fi

    }

    case $1 in

    start) start ;;

    stop) stop ;;

    restart) restart ;;

    status) status ;;

    *) echo "Usage: $0 {start|stop|restart|status}" ;;

    esac

    exit 0

    设置可执行权限:

    chmod +x myshell.sh

    执行:

    > sh myshell.sh start # 相对路径

    starting...

    start success

    > sh /work/shelltask/myshell.sh start #绝对路径

    展开全文
  • 现在有一SpringBoot项目,该项目制作成的jar包名为: springboot-learning-0.0.1-SNAPSHOT.jar.jar . 将该jar包部署到Linux平台的 /app/...其启动 start.sh 脚本命令如下: #!/bin/sh rm -f tpid nohup java -Xms...

            现在有一SpringBoot项目,该项目制作成的jar包名为: springboot-learning-0.0.1-SNAPSHOT.jar.jar . 将该jar包部署到Linux平台的 /app/dev/springboo-learning 目录下。

     

    其启动 start.sh 脚本命令如下:

    
    #!/bin/sh
    rm -f tpid
    nohup java -Xms256m -Xmx256m -jar /app/dev/springboo-learning/springboot-learning-0.0.1-SNAPSHOT.jar > log-springboot-learning.log 2>&1 &
    echo $! > tpid
    echo Start Success!
    tail -f log-springboot-learning.log
    
    

     

    其关闭 shutdown.sh 脚本命令如下:

    
    #!/bin/sh
    APP_NAME=/app/dev/springboo-learning/springboot-learning-0.0.1-SNAPSHOT.jar
    
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'Stop Process...'
        kill -15 $tpid
    fi
    sleep 5
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'Kill Process!'
        kill -9 $tpid
    else
        echo 'Stop Success!'
    fi
    
    

     

     

     

    展开全文
  • 1.创建start.sh #!/bin/sh nohup java -jar 文件.jar & echo $!> /根目录一直到文件/obj.pid 2.创建stop.sh #!/bin/sh PID=$(cat /根目录一直到/obj.pid) kill -9 $PID 3.创建obj.pid文件 4.以上三个...
  • 启动脚本 1、创建启动脚本、日志文件 touch startProject.sh touch myProject.log 2、启动脚本文件内容如下: # !/bin/sh # nohup:在退出SSH会话后程序启动仍然有效 # 执行一个shell命令行时通常会自动打开三...
  • linux启动关闭java脚本(支持多个)1.启动java程序1.创建文件2.编辑文件3.编写启动项目脚本4.启动脚本 启动java程序2.关闭java程序1.创建文件2.编辑文件3.编写停止脚本4.启动脚本 关闭java程序 1.启动java程序 1....
  • linux计划任务执行.sh脚本

    千次阅读 2018-04-23 13:39:06
    1:新建一个目录(可以是你当前的项目,如果.sh脚本执行结果和你项目相关的话。如果是系统本身相关的,建议放在其他位置)2:在新建的目录下创建一个test.sh文件内容如下(这里以开启mysql服务为例-->事先关闭:...
  • 我们可以更加自动化,新建一个shut.sh脚本,写入以下内容即可。 #!/bin/bash tmp=`ps -ef | grep YOUR_NAME | grep -v grep | awk '{print $2}'` echo ${tmp} for id in $tmp do kill -9 $id echo "killed $id
  • 1、如果想使用Linux crontab(类似java quartz),需要先启动crontab.关于crontab的启动、关闭、重启、重新载入配置的方式如下: /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /...
  • 自动启动ORACLE服务 在oracle用户下: vi Start_ORA.sh -------------------------------- echo "Begin to start the oracle!" lsnrctl start sqlplus /nolog
  • 脚本内容: #!/bin/bash SERVICE_NAME="{服务名称}" HELP(){ echo "*************************" echo "#### Usage: ####" echo "* run.sh -Option" echo "* Option: start/stop" echo "* Example:" echo
  • linux下搭建好tomcat之后,每次启动和关闭都要去tomcat的bin目录下执行./startup.sh和./shutdown.sh 这是很不方便的,下面介绍如何像执行ls mv cp等命令一样启动,关闭,重启tomcat。 创建脚本 脚本创建路径.....
  • linux 关闭一个程序脚本

    千次阅读 2018-11-30 09:15:48
    /bin/sh function PidFind() { PIDCOUNT=`ps -ef | grep $1 | grep -v "grep" | grep -v $0 | awk '{print $2}' | wc -l`; if [ ${PIDCOUNT} -gt 1 ] ; then echo "There are t...
  • linux 服务器 中脚本启动关闭 jar

    千次阅读 2017-08-13 01:21:58
    第一种启动 单独的jar (或 runnabled jar)即不依赖 第三方jar包 的 jar  后台启动: start-test.sh #! /bin/sh java -Xms128m -Xmx2048m -jar zhangqingzhou-test01.jar 5 > test.log & ...关闭程序:stop-t
  • 先配置好环境变量$TOMCAT_HOME在/etc/init.d/目录下新建文件... /bin/sh# This shell script enables the automatic use of tomcat## Author: liuxuanyu#RETVAL=0start() {echo -n "Tomcat Starting..."echo$TOMCA...
  • linux 启动服务,关闭服务脚本

    千次阅读 2016-12-14 11:08:17
    start.sh#!/bin/sh sleep 2 kill -s 9 `ps -ef | grep /home/crmhdcc/web/huacrm/apache-tomcat-7.0.64/ | grep -v grep | awk '{print $2}'` rm -rf /home/crmhdcc/web/huacrm/apache-tomcat-7.0.64/work/Catalina ...
  • 应用crontab -e创建一个定时任务 : */5 * * * * /usr/local/dmws/...每五分钟执行/usr/local/dmws/下的脚本control.sh 并输出到 /tmp/cron_log.txt文件中 需要给脚本授权 chmod 777 control.sh  脚本内容: ...
  • 打开一个终端执行命令,写在脚本里可以在启动脚本的时候,有直观的调试观感。 命令: gnome-terminal -- bash -c "sh /studio.sh;...使用set -x是开启脚本调试, set +x是关闭,set -o是查看。所以,使用s
  • linux下启动关闭jboss脚本

    千次阅读 2007-05-10 08:36:00
    1.关闭jbossJAVA_HOME=/usr/jdk15export JAVA_HOMEJBOSS_HOME=/usr/jbossexport JBOSS_HOMEPATH=$PATH:${JAVA_HOME}/binexport PATHPATH=${PATH}:${JBOSS_HOME}/binexport PATHshutdown.sh -S 2.启动jbossJAVA_HO
  • [root@vmtest~]#cd/disk2/mysql_multi_instances/3306[root@vmtest3306]#vimysql_server.sh#!/bin/bash#2016-01-15version1##2016-01-15version2#thescripthasmodified,noneedtoplacewiththesoc...
  • linux自动重启脚本

    千次阅读 2018-08-17 23:27:47
    前言 服务器每个几个小时自动关闭一次,人都已经疯了。直接一个脚本来自动监听重启,保证服务正常。 使用crontab来进行定时检测脚本 sudo crontab -e #进入编辑状态,选用vi...restart.sh 脚本 #! /bin/sh pro...
  • Linux 后台运行脚本

    2019-01-02 18:02:44
    Linux 后台运行脚本 后台运行命令示例 nohup php artisan tmp:xxx >> xxx.log & 如何运行.sh文件 直接用./sh 文件就可以运行,但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要...
  • linux下批量关闭服务器的shell脚本 陆华兴 18912948909 春节放假,部门一大批服务器需要关闭,手工关闭比较麻烦,借助linux下ipmitools工具,写了一个简单的shell脚本,批量关闭某个网段的服务器。 1. [root@lhx-vm ...
  • ” ps -ef | grep /home/test/tomcat | grep -v grep | grep -v catalina.sh | awk ‘{print $2}’ | xargs echo ps -ef | grep /home/test/tomcat | grep -v grep | grep -v catalina.sh | awk ‘{print $2}’ | ...
  • 1)启动脚本(dbstart.sh) 1 lsnrctl start 2 sqlplus /nolog <<EOF 3 connect / as sysdba 4 startup; 5 exit ...$sh dbstart.sh 即可 ...2)关闭脚本(dbstop.sh) 1 lsnrctl st...
  • linux重启tomcat脚本

    2019-08-21 09:53:13
    tomcat偶尔会出现shutdown无法关闭的情况 此时我们通过 ps -ef...书写了一段sh脚本如下: #!/bin/sh read -p "请输入对应数字 1:应用1, 2:应用2" choose NAME="" PATH="" case $choose in 1) #应用1 tomcat名字...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 617
精华内容 246
关键字:

linux关闭sh脚本

linux 订阅