实现jar开机启动

通过shell脚本并加入到crond定时任务,实现对jar服务的开机启动

创建restart_giacp_apps.sh文件

#!/bin/bash
datetime=date +"%Y-%m-%d %H:%M:%S"
#echo "验证是否执行" >> /usr/local/shell/test.log
source /etc/profile #注意,这里有的系统可能需要重新导入(刷新)环境变量,不然部分jar服务无法正常运行
function restart_service() {
  local service_name=$1
  local service_path=$2
  
  running_pid=$(ps -ef | grep "$service_name" | grep jar | awk '{print $2}')
  
  if [ -z "$running_pid" ]; then
    echo "未启动-$service_name"
    cd "$service_path"
    sleep 5
    #nohup ${java_bin} -javaagent:**.jar -jar **.jar >/dev/null 2>&1 &
    nohup ${java_bin} -javaagent:$(find ${service_path} -name "*.jar" -type f) -jar $(find ${service_path} -name "*.jar" -type f) >/dev/null 2>&1 &
  else
    echo "${service_name}已启动,现在杀死并重启"
    echo "$running_pid" | xargs kill
    cd "$service_path"
    sleep 15
    # nohup ${java_bin} -javaagent:**.jar -jar **.jar >/dev/null 2>&1 &
    nohup ${java_bin} -javaagent:$(find ${service_path} -name "*.jar" -type f) -jar $(find ${service_path} -name "*.jar" -type f) >/dev/null 2>&1 &
  fi
}



eureka_pwd=/usr/local/GIACP-APPS-1.6.6/eureka/
gateway_pwd=/usr/local/GIACP-APPS-1.6.6/gateway/
core_pwd=/usr/local/GIACP-APPS-1.6.6/core/
device_pwd=/usr/local/GIACP-APPS-1.6.6/device/
media_pwd=/usr/local/GIACP-APPS-1.6.6/media/
visitor_pwd=/usr/local/GIACP-APPS-1.6.6/visitor/
system_monitor_service_pwd=/usr/local/GIACP-APPS-1.6.6/monitor/

java_bin=/usr/local/jdk1.8.0_202/bin/java

#执行几次就调用restart_service函数多少次,并吧服务名和路径闯入函数中处理!
restart_service "giacp-eureka" "$eureka_pwd" #第一个参数是服务名 第二个参数是路径变量
restart_service "giacp-gateway" "$gateway_pwd"
restart_service "core-service" "$core_pwd"
restart_service "device-service" "$device_pwd"
restart_service "giacp-media" "$media_pwd"
restart_service "visitor-service" "$visitor_pwd"
restart_service "system-monitor-service" "$system_monitor_service_pwd"

加入到crontab中,实现任务调度,加入开机60秒后执行启动命令

#系统重启后60秒执行这个命令
@reboot sleep 60 && /usr/local/shell/restart_giacp_apps.sh
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Linux 系统中,可以通过 Systemd 来实现 jar开机启动,下面是具体的实现方法: 1. 编写服务配置文件 首先,你需要编写一个 Systemd 配置文件,后缀名为 .service,这个文件描述了你要启动的服务的相关信息,包括服务的名称、描述、启动命令等。这个文件需要保存在 `/etc/systemd/system/` 目录下,以 root 用户身份进行操作。 例如,如果你要编写一个自启动jar 包服务的配置文件,可以使用以下命令创建一个名为 `myapp.service` 的文件: ```bash sudo vim /etc/systemd/system/myapp.service ``` 然后在文件中输入以下内容: ``` [Unit] Description=My Application After=network.target [Service] User=myuser WorkingDirectory=/path/to/myapp ExecStart=/usr/bin/java -jar myapp.jar SuccessExitStatus=143 [Install] WantedBy=multi-user.target ``` 这个配置文件中,`[Unit]` 段描述了服务的基本信息,如服务名称和描述,以及该服务在启动时需要等待的其他服务。`[Service]` 段描述了服务的启动方式,包括启动命令、工作目录和退出状态码等。`[Install]` 段描述了服务的安装信息,包括服务的启动级别和依赖关系。 其中,`ExecStart` 指定了 jar 包的启动命令,`WorkingDirectory` 指定了 jar 包的工作目录,`User` 指定了服务运行的用户,`SuccessExitStatus` 指定了正常退出状态码。 2. 重新加载 Systemd 配置文件 在编写完 Systemd 配置文件后,需要执行以下命令来重新加载配置文件: ```bash sudo systemctl daemon-reload ``` 这个命令会重新加载 `/etc/systemd/system/` 目录下的所有配置文件,使得新的配置文件生效。 3. 启动服务并设置自启动 完成以上两个步骤后,就可以通过以下命令来启动服务: ```bash sudo systemctl start myapp ``` 如果要设置服务开机启动,可以使用以下命令: ```bash sudo systemctl enable myapp ``` 这个命令会在 `/etc/systemd/system/multi-user.target.wants/` 目录下创建一个符号链接,指向 `/etc/systemd/system/myapp.service` 文件,从而使得 jar 包服务在系统启动自动启动。 至此,你就成功地实现了 Linux 系统 jar 包服务的开机启动

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值