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
在删除文件前先停止服务器的原因
- 如果不停止服务器,倘若有人使用文件,将会导致程序错误
- 如果不停止服务,因为程序持有文件的引用,会导致删除失败
Go deeper!