创建开始和结束脚本
在你的jar目录下创建两个脚本
touch start.sh
chmod +x start.sh
touch stop.sh
chmod +x stop.sh
这是启动java服务和停止java服务的两个脚本,具体命名可以自己写自己的
start.sh内容
#!/bin/bash
# 这里是JDK安装的环境变量,自己改成自己的路径即可
export JAVA_HOME=/usr/jdk1.8.0_211
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
echo "************ KILL Java Service Will Begin **************"
#得到对应服务的进程号 关闭tomcat
str=`ps -ef | grep xxxxx你的jar文件xxxxx.jar | grep -v "grep"|awk '{print $2}'`
kill -9 $str
if [ "$?" -eq 0 ]; then
echo "killed pid is "$str
echo "kill success"
else
echo "kill failed"
fi
echo "************ KILL Java Service Will End**************"
nowDate=`date +"%Y-%m-%d"`
# 跳转到jar存放的目录
cd /xx/xx/xxxx
# 执行挂起命令
nohup java -jar xxxxx你的jar文件xxxxx.jar &
# 跳转到jar存放的目录
cd /xx/xx/xxxx
#休眠5秒自动删除nohup.out文件
sleep 5
rm -rf nohup.out
nowstr=`ps -ef | grep personloger-boot-oa-0.0.1-SNAPSHOT.jar | grep -v "grep"|awk '{print $2}'`
#打印出现在新的进程号
echo "now pid is "$nowstr
echo "************ Personloger-OA is Running... **************"
stop.sh 的内容
#!/bin/bash
echo "************ KILL Java Service Will Begin **************"
#得到对应服务的进程号 关闭tomcat
str=`ps -ef | grep xxxxx你的jar文件xxxxx.jar | grep -v "grep"|awk '{print $2}'`
kill -9 $str
if [ "$?" -eq 0 ]; then
echo "killed pid is "$str
echo "kill success"
else
echo "kill failed"
fi
echo "************ KILL Java Service Will End**************"
注意:一定要给start和stop进行权限修改 chmod +x xxx.sh
编写注册服务
vim /usr/lib/systemd/system/somejar.service
名称自定义
[Unit]
Description=可以自定义描述
After=network.target
[Service]
Type=forking
ExecStart=刚刚写的那个start #启动服务脚本的绝对路径
ExecStop=刚刚写的那个stop #停止服务脚本的绝对路径.
PrivateTmp=true
[Install]
WantedBy=multi-user.target
将服务设为开机启动
systemctl enable somejar.service
# 设置完后重启
reboot
常用命令
systemctl start somejar.service #启动 服务
systemctl stop somejar.service #停止 服务
systemctl status somejar.service #查看 服务当前的运行状态
systemctl enable somejar.service #开机启动 服务
systemctl disable somejar.service #取消开机启动 服务
systemctl list-unit-files; #查看当前服务(是否开机启动等)状态