Linux关闭jetty服务器脚本

Linux 停止与启动服务器

在日常的开发中,我们经常需要停止tomcat或jetty服务器进行一些操作后,然后重新启动服务器。
下面即为停止jetty服务器的一段脚本。我们通过脚本来理解一下这里面的脚本

#!/bin/bash
pidlist=`ps -ef|grep start.jar|grep -v "grep"|awk '{print $2}'`
if [ "$pidlist" = "" ];then
      echo "no pid alive"
else
      for pid in ${pidlist}
      {
         kill -9 $pid
         echo "KILL $pid:"
      }
      echo "app stop success"
fi
rm -rf /home/user/jetty/data
cd /home/user/jetty
java -jar start.jar

通过jar包寻找其启动的进程

ps 命令

  • -e 显示所有进程
  • -f 全格式

ps -ef 显示格式:

  • 1.UID 用户ID
  • 2.PID 进程ID
  • 3.PPID 父进程ID
  • 4.C CPU占用率
  • 5.STIME 开始时间
  • 6.TTY 开始此进程的TTY----终端设备
  • 7.TIME 此进程运行的总时间
  • 8.CMD 命令名

grep 命令

正则匹配,输出匹配上数据之外的所有行 -v 选项:

grep -v "match_pattern" file_name

"|"代表其前面的输出作为后面表达式的输入

awk '{print $2,$5}'

可以认为是输出函数 数据行一空格分割,索引从1开始,打印第几个数据

例如:

执行awk '{print $2,$5}'的输出结构为:

至此,第一行的脚本我们就知道是什么意思了

pidlist=`ps -ef|grep start.jar|grep -v "grep"|awk '{print $2}'`

查找进程中 包含start.jar的但是又不包含grep 的输出其第2个参数 即进程的ID--PID

逐条kill进程

使用方法

kill[参数][进程号]

其中参数的类型为:

脚本中使用

kill -9 $pid

意思是强制终止进程

移除文件

rm

  • -i 删除前逐一询问确认。
  • -f 略过不存在的文件,不显示任何信息,强制删除
  • -r 同时删除该目录下的所有目录层
rm -rf /home/user/jetty/data

强制删除/home/user/jetty/data下的所有文件及目录。

java -jar start.jar

重新启动jetty

在删除文件前先停止服务器的原因

  • 如果不停止服务器,倘若有人使用文件,将会导致程序错误
  • 如果不停止服务,因为程序持有文件的引用,会导致删除失败
I am chris, and what about you?
原文地址:https://www.cnblogs.com/arax/p/8391874.html