CentOS7开机自动启动jar包

因为公司突发情况断电导致Linux服务器重启。不管你有事没有事,公司就要打电话让你紧急处理,很多jar项目需要单独启动这样就很烦。干脆一次性解决在开机自动启动jar项目服务。这样服务器重启的时候就会自动运行项目,实现思路如下。

微服务JAR 启动脚本

添加shell脚本

server.sh

#!/bin/bash
# chkconfig: 2345 85 15
# description:auto_run

# 工作目录修改成自己的地址
# 注意!!! 并且该目录中只能存在一个jar包
APP_HOME=/www/wwwroot/test/
JAR_HOME_TOW="`cd ${APP_HOME} && find -name '*.jar' `"
APP_NAME=${JAR_HOME_TOW:2}

cd $APP_HOME

#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}
 
#启动方法
start(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "================================================="
    echo "warn: $APP_NAME is already running. (pid=$pid)"
    echo "================================================="
  else
    nohup java -jar $APP_NAME  > /dev/null 2>&1 &
    echo "${APP_NAME} start success"
  fi
}
 
#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
	echo "${APP_NAME} stop success"
  else
	echo "================================================="
    echo "warn: $APP_NAME is not running"
    echo "================================================="
  fi  
}
 
#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
	echo "================================================="
    echo "warn: $APP_NAME is already running. (pid=$pid)"
    echo "================================================="
  else
    echo "================================================="
    echo "warn: $APP_NAME is not running"
    echo "================================================="
  fi
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    stop
	echo "restart the application ..."
    start
    ;;
  *)
	echo "================================================="
    echo "Tips: start|stop|restart|status"
    echo "================================================="
    ;;
esac
复制代码

添加执行权限

chmod +x  service.sh
复制代码

移动到/etc/init.d目录下

mv service.sh /etc/init.d/
复制代码

【chkconfig 开机自启 方式一】

chkconfig可以更新(启动或停止)和查询系统服务(service)运行级信息。
更简单一点,chkconfig是一个用于维护/etc/rc[0-6].d目录的命令行工具。
复制代码

添加系统服务

# 注册系统服务
chkconfig --add service.sh
# 删除系统服务
chkconfig --del service.sh
# 设置开机启动
chkconfig service.sh on
# 查看系统服务列表
chkconfig --list
复制代码

常用命令

#启动服务
service service.sh start
#停止服务
service service.sh stop
#重启服务
service service.sh restart
#服务状态
service service.sh status
复制代码

【 systemctl 开机自启 方式二】

在Centos 中 systemctl  是设置系统服务的命令,
即 service, 它融合之前service和chkconfig的功能于一体。
可以使用它永久性或只在当前会话中启用/禁用服务。
复制代码

在 /usr/lib/systemd/system/ 创建服务
demo.service

[Unit]
Description=eureka
After=network.target
  
[Service]
Type=forking
ExecStart=/etc/rc.d/init.d/server.sh start
ExecReload=/etc/rc.d/init.d/server.sh restart
ExecStop=/etc/rc.d/init.d/server.sh stop
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target

复制代码

常用命令

#重载系统服务:
systemctl daemon-reload
#设置开机启动
systemctl enable demo.service
#设置禁用启动
systemctl disable demo.service
#查看系统服务列表
systemctl list-unit-files –type=service
#启动服务
systemctl start demo.service
#停止服务
systemctl stop demo.service
#重启服务
systemctl reload demo.service
#服务状态
systemctl status demo.service
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享