linux服务器运行停止Jar包Shell脚本编写

启动脚本:

#!/bin/sh
#启动脚本,nohup方式表示后台运行jar包
# 参数说明如下
# -Dfile.encoding 设置文件编码方式
# -Xms2000m    JVM初始分配的堆内存
# -Xmx2000m    JVM最大允许分配的堆内存
# persona-SNAPSHOT.jar    jar文件的路径
# >logs/console.log    实时输出控制台信息到指定文件 如不需要保存控制台信息则>/dev/null
nohup java -Dfile.encoding=UTF-8 -Xms2000m -Xmx2000m -jar persona-SNAPSHOT.jar >/dev/null 2>&1 &

java项目以jar包的方式启动时,application.yml中或者application.properties文件中难免会有一些中文出现,如果这个时候我们直接以java -jar jar包名称启动时,虽然启动能够成功,但是在加载配置文件时会出现意想不到的问题,这个时候我们只要改下启动jar包的命令即可

java -jar -Dfile.encoding=utf-8

2>&1 &解释:
关于 bash中0,1,2三个数字分别代表STDIN_FILENO标准输入、STDOUT_FILENO标准输出、STDERR_FILENO标准错误。
2>&1表示把标准错误2重定向到标准输出1中的,1前的&表示让bash将1解释为标准输出而不是文件1(2>1表示把标准错误2重定向好了文件1中)。
最后一个&,则是让bash在后台执行。

停止脚本:

#!/bin/bash
# 停止脚本
apiID=$(ps -ef |grep 'persona-SNAPSHOT.jar'|grep -v 'grep'| awk '{print $2}')
# 如果进程不存在
if test $apiID ;
then
    # 杀死进程
    kill -9 $apiID
    echo "进程已杀死"
else
    # 提示不进程不存在
    echo "进程不存在"
fi

其中:
ps -ef |grep 'persona-SNAPSHOT.jar'为通过管道查找persona-SNAPSHOT.jar的进程;
grep -v 'grep'表示忽略grep persona-SNAPSHOT.jar的进程;
awk '{print $2}'表示打印第二个字段,即获取进程ID。

你可能感兴趣的:(linux,服务器,jar)