最近一直在搞服务器,现在要运行我们的程序,都是jar包的格式,但是每次输入运行命令都很麻烦,现在进行放入脚本启动或者注册服务启动,来简化启动,但是这个方法也有一定的缺陷,需要一定的标准规范才可以正确运行,比如jar包的打包名称一定要和脚本中的名称一样
下面进入正题,首先来脚本启动
说一下前提,根据自己的需求修改相应的路径
1. jar包路径 /usr/local/docpc 2. jar包名称 doctor-pc-0.0.1-SNAPSHOT.jar 3. java路径 /usr/bin/java
新建启动脚本
脚本启动的日志会在jar包目录下生成
# vim start.sh
脚本内容如下
#启动命令所在目录 HOME='/usr/local/docpc' start(){ #进入命令所在目录 cd $HOME nohup sudo /usr/bin/java -jar doctor-pc-0.0.1-SNAPSHOT.jar > doctor-pc-0.0.1-SNAPSHOT.jar.log 2>&1 & } stop(){ #kill 掉本程序 ps -ef | grep doctor-pc-0.0.1| grep -v grep |awk '{print $2}' | xargs sudo kill -9 } case $1 in start) start ;; stop) stop ;; restart) $0 stop sleep 2 $0 start ;; *) echo "Usage: {start|stop|restart}" ;; esac exit
启动
./start.sh start
关闭
./start.sh stop
重启
./start.sh restart
至此脚本启动完成,在jar包的同等级目录下会生成日志
下面来讲一下把jar包的启动注册到系统服务并添加到开机自启
jar包路径 /usr/local/docpc/
- 进入 /lib/systemd/system
# cd /lin/systemd/system
- 新建 docpc.service
# vim docpc.service
- docpc.service内容如下
[Unit] Description=docpc After=network.target [Service] ExecStart=/usr/bin/java -jar /usr/local/docpc/doctor-pc-0.0.1-SNAPSHOT.jar ExecReload=/bin/kill -s HUP $MAINPID ExecStop= ps -ef | grep doctor-pc-0.0.1| grep -v grep |awk '{print $2}' | xargs sudo kill -9 [Install] WantedBy=multi-user.target
- 给docpc.service加文件权限
# chmod 777 docpc.service
- 启动服务
# systemctl start docpc.service
- 关闭
# systemctl stop docpc.service
- 重启
# systemctl restart docpc.service
- 加入开机自启
# systemctl enable docpc.service
- 关闭开机自启
# systemctl disable docpc.service
到此,jar包的系统服务设置完成,脚本启动和注册系统是两个不同的启动方式,各位可以把启动脚本放入开机自动也可实现脚本的开机启动,这里就不说了,大家可以去Google一下。
下面进行强烈推荐的一波操作
- 首先把上面编写的shell启动脚本移动到/etc/rc.d/init.d目录下,并命名startjar
# mv start.sh /etc/rc.d/init.d/startjar
- 打开启动脚本
# vim startjar
- 头部添加声明代码
#!/bin/sh #chkconfig: 2345 80 90 #description:auto_run
完成的脚本代码如下
#!/usr/bin/sh #chkconfig: 2345 80 90 #description:auto_run #启动命令所在目录 HOME='/usr/local/docpc' start(){ #进入命令所在目录 cd $HOME nohup sudo /usr/bin/java -jar doctor-pc-0.0.1-SNAPSHOT.jar > doctor-pc-0.0.1-SNAPSHOT.jar.log 2>&1 & } stop(){ #kill 掉本程序 ps -ef | grep doctor-pc-0.0.1| grep -v grep |awk '{print $2}' | xargs sudo kill -9 } case $1 in start) start ;; stop) stop ;; restart) $0 stop sleep 2 $0 start ;; *) echo "Usage: {start|stop|restart}" ;; esac exit
- 服务添加
# chkconfig --add startjar
本步骤如果出现服务不支持chkconfig的解决方案就是第三步的操作
- 启动/关闭/重启/状态
# systemctl start startjar # systemctl stop startjar # systemctl restart startjar # systemctl status startjar
- 脚本注册服务完成,本过程就是对上面两个过程的选择性整合,大家可根据实际情况选择使用最后附上删除服务
# chkconfig --del startjar
有问题欢迎留言咨询