【定昌Linux系统】部署了java程序,设置开启启动

news2025/4/7 3:11:57

将代码上传到相应的目录,并且配置了一个.sh的启动脚本文件

文件内容:

#!/bin/bash

# 指定JAR文件的路径(如果JAR文件在当前目录,可以直接使用文件名)
JAR_FILE="/usr/local/java/xs_luruan_client/lib/xs_luruan_client.jar"
# 或者使用绝对路径
# JAR_FILE="/path/to/your/myapp.jar"

# 检查JAR文件是否存在
if [ ! -f "$JAR_FILE" ]; then
  echo "Error: JAR file '$JAR_FILE' not found!"
  exit 1
fi

# 运行JAR文件
java -cp "$JAR_FILE" com.xs.start.Starter

# 检查Java命令是否成功执行(可选)
# 注意:这个检查可能不够准确,因为Java应用可能会以非零状态码退出表示正常结束(例如,Spring Boot应用的优雅停机)
# 如果你需要更精确的检查,应该根据应用的具体行为来调整
if [ $? -ne 0 ]; then
  echo "Error: Java application exited with a non-zero status code."
  exit 1
fi

echo "Java application exited successfully."

运行start.sh

./start.sh

运行界面:

我现在要做成开机启动的方式:

创建.service文件

[Unit]
Description=XS Luruan Client Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/java/xs_luruan_client/start.sh
Restart=on-failure
User=root

[Install]
WantedBy=multi-user.target

将文件命名为:xs_luruan_client.service

将文件通过filezille工具上传到:/etc/systemd/system文件夹下,但是提示权限不够

怎么办呢,那应该就得付权限了

想直接在这个目录下创建.service文件,或者将.service文件复制到该目录下,提示

sudo: /etc/sudoers.d/README is world writable

经过查询deepseek,让修改权限

可以上传了

然后将设置自启动

在系统上执行如下:

验证下是否启动:

竟然启动失败了,这是怎么回事呢

查看服务状态

提示如下:

[Unit]
Description=XS Luruan Client Service
After=network.target

[Service]
Environment="JAVA_HOME=/usr/local/java/jdk1.8.0_391"
Environment="PATH=$JAVA_HOME/bin:$PATH"
Type=simple
ExecStart=/usr/local/java/xs_luruan_client/start.sh
Restart=on-failure
User=root

[Install]
WantedBy=multi-user.target

增加了环境变了

重新刷新验证

还是同样的问题

查找javahome的绝对路径

readlink -f $(which java)

在.sh中命令增加绝对路径

#!/bin/bash

# 指定JAR文件的路径(如果JAR文件在当前目录,可以直接使用文件名)
JAR_FILE="/usr/local/java/xs_luruan_client/lib/xs_luruan_client.jar"
# 或者使用绝对路径
# JAR_FILE="/path/to/your/myapp.jar"

# 检查JAR文件是否存在
if [ ! -f "$JAR_FILE" ]; then
  echo "Error: JAR file '$JAR_FILE' not found!"
  exit 1
fi

# 运行JAR文件
/usr/local/java/jdk1.8.0_391/bin/java -cp "$JAR_FILE" com.xs.start.Starter

# 检查Java命令是否成功执行(可选)
# 注意:这个检查可能不够准确,因为Java应用可能会以非零状态码退出表示正常结束(例如,Spring Boot应用的优雅停机)
# 如果你需要更精确的检查,应该根据应用的具体行为来调整
if [ $? -ne 0 ]; then
  echo "Error: Java application exited with a non-zero status code."
  exit 1
fi

echo "Java application exited successfully."

就可以正常启动了

现在要系统重启,发现的确执行了,但是联网失败了,看来是在终端联网就启动系统了,但是网络还没有通,所以联网失败了。

关闭服务:

# 停止单个服务(需管理员权限)
sudo systemctl stop <service-name>

# 示例:停止 Apache/Nginx
sudo systemctl stop apache2  # Ubuntu/Debian 的 Apache
sudo systemctl stop httpd     # CentOS/RHEL 的 Apache
sudo systemctl stop nginx     # Nginx

# 查看服务状态(确认是否停止)
sudo systemctl status <service-name>

那么看看如何实现延时启动呢。

在.service文件中增加延时配置

[Unit]
Description=XS Luruan Client Service
After=network.target

[Service]
Environment="JAVA_HOME=/usr/local/java/jdk1.8.0_391"
Environment="PATH=$JAVA_HOME/bin:$PATH"
Type=simple
ExecStartPre=/bin/sleep 50  # 延时5秒
ExecStart=/usr/local/java/xs_luruan_client/start.sh
Restart=on-failure
User=root

[Install]
WantedBy=multi-user.target

然后重新将文件上传,并且复制到system目录,刷新systemctl

提示sleep不存在,

那么就监测sleep是否存在

which sleep   # 输出应为 /bin/sleep 或 /usr/bin/sleep

输出:

/usr/bin/sleep 

那么就把start.sh  和 service文件都改一下

#!/bin/bash

# 指定JAR文件的路径(如果JAR文件在当前目录,可以直接使用文件名)
JAR_FILE="/usr/local/java/xs_luruan_client/lib/xs_luruan_client.jar"
# 或者使用绝对路径
# JAR_FILE="/path/to/your/myapp.jar"

# 检查JAR文件是否存在
if [ ! -f "$JAR_FILE" ]; then
  echo "Error: JAR file '$JAR_FILE' not found!"
  exit 1
fi
#延时50秒再执行,以便于设备联网成功
/usr/bin/sleep 50

# 运行JAR文件
/usr/local/java/jdk1.8.0_391/bin/java -cp "$JAR_FILE" com.xs.start.Starter

# 检查Java命令是否成功执行(可选)
# 注意:这个检查可能不够准确,因为Java应用可能会以非零状态码退出表示正常结束(例如,Spring Boot应用的优雅停机)
# 如果你需要更精确的检查,应该根据应用的具体行为来调整
if [ $? -ne 0 ]; then
  echo "Error: Java application exited with a non-zero status code."
  exit 1
fi

echo "Java application exited successfully."
[Unit]
Description=XS Luruan Client Service
# 声明需要网络在线后才能启动
After=network-online.target
Wants=network-online.target

[Service]
Environment="JAVA_HOME=/usr/local/java/jdk1.8.0_391"
Environment="PATH=$JAVA_HOME/bin:$PATH"
Type=simple
ExecStart=/usr/local/java/xs_luruan_client/start.sh
Restart=on-failure
User=root

[Install]
WantedBy=multi-user.target

通过在.sh中增加延时操作,终于可以在自启过程中,等待网络连接成功后再启动了,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2309355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java零基础入门笔记:(7)异常

前言 本笔记是学习狂神的java教程&#xff0c;建议配合视频&#xff0c;学习体验更佳。 【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili 第1-2章&#xff1a;Java零基础入门笔记&#xff1a;(1-2)入门&#xff08;简介、基础知识&#xff09;-CSDN博客 第3章…

【字符串】最长公共前缀 最长回文子串

文章目录 14. 最长公共前缀解题思路&#xff1a;模拟5. 最长回文子串解题思路一&#xff1a;动态规划解题思路二&#xff1a;中心扩散法 14. 最长公共前缀 14. 最长公共前缀 ​ 编写一个函数来查找字符串数组中的最长公共前缀。 ​ 如果不存在公共前缀&#xff0c;返回空字符…

react 中,使用antd layout布局中的sider 做sider的展开和收起功能

一 话不多说&#xff0c;先展示效果&#xff1a; 展开时&#xff1a; 收起时&#xff1a; 二、实现代码如下 react 文件 import React, {useState} from react; import {Layout} from antd; import styles from "./index.module.less"; // 这个是样式文件&#…

easyExcel使用案例有代码

easyExcel 入门,完成web的excel文件创建和导出 easyExcel官网 EasyExcel 的主要特点如下&#xff1a; 1、高性能&#xff1a;EasyExcel 采用了异步导入导出的方式&#xff0c;并且底层使用 NIO 技术实现&#xff0c;使得其在导入导出大数据量时的性能非常高效。 2、易于使…

苹果廉价机型 iPhone 16e 影像系统深度解析

【人像拍摄差异】 尽管iPhone 16e支持后期焦点调整功能&#xff0c;但用户无法像iPhone 16系列那样通过点击屏幕实时切换拍摄主体。前置摄像头同样缺失人像深度控制功能&#xff0c;不过TrueTone原彩闪光灯系统在前后摄均有保留。 很多人都高估了 iPhone 的安全性&#xff0c;查…

视觉图像坐标转换

1. 透镜成像 相机的镜头系统将三维场景中的光线聚焦到一个平面&#xff08;即传感器&#xff09;。这个过程可以用小孔成像模型来近似描述&#xff0c;尽管实际相机使用复杂的透镜系统来减少畸变和提高成像质量。 小孔成像模型&#xff1a; 假设有一个理想的小孔&#xff0c;…

脚本无法获取响应主体(原因:CORS Missing Allow Credentials)

背景&#xff1a; 前端的端口号8080&#xff0c;后端8000。需在前端向后端传一个参数&#xff0c;让后端访问数据库去检测此参数是否出现过。涉及跨域请求&#xff0c;一直有这个bug是404文件找不到。 在修改过程当中不小心删除了一段代码&#xff0c;出现了这个bug&#xff0…

leetcode第39题组合总和

原题出于leetcode第39题https://leetcode.cn/problems/combination-sum/description/题目如下&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以…

SQLark 数据迁移|断点续迁已上线(Oracle-达梦)

数据迁移是 SQLark 最受企业和个人用户欢迎的功能之一&#xff0c;截止目前已帮助政府、金融、能源、通信等 50 家单位完成从 Oracle、MySQL 到达梦的全量迁移&#xff0c;自动化迁移成功率达 96% 以上。 在 Oracle 到达梦数据库迁移过程中&#xff0c;SQLark V3.3 新增 断点续…

Element Plus中el-tree点击的节点字体变色加粗

el-tree标签设置 <el-tree class"tree":data"treeData":default-expand-all"true":highlight-current"true"node-click"onTreeNodeClick"><!-- 自定义节点内容&#xff0c;点击的节点字体变色加粗 --><!-- 动…

vmware安装firepower ftd和fmc

在vmware虚拟机中安装cisco firepower下一代防火墙firepower threat defence&#xff08;ftd&#xff09;和管理中心firepower management center&#xff08;fmc&#xff09;。 由于没有cisco官网下载账号&#xff0c;无法下载其中镜像。使用eveng模拟器中的ftd和fmc虚拟镜像…

计算机毕业设计SpringBoot+Vue.js医院资源管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

[含文档+PPT+源码等]精品基于Python实现的微信小程序的乡村医疗咨询系统

基于Python实现的微信小程序的乡村医疗咨询系统背景&#xff0c;可以从以下几个方面进行阐述&#xff1a; 一、社会背景 医疗资源分布不均&#xff1a;在我国&#xff0c;城乡医疗资源分布不均是一个长期存在的问题。乡村地区由于地理位置偏远、经济条件有限&#xff0c;往往…

Python实现GO鹅优化算法优化BP神经网络回归模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 传统BP神经网络的局限性&#xff1a;BP&#xff08;Back Propagation&#xff09;神经网络作为一种…

7.1.2 计算机网络的分类

文章目录 分布范围交换方式 分布范围 计算机网络按照分布范围可分为局域网、广域网、城域网。局域网的范围在10m~1km&#xff0c;例如校园网&#xff0c;网速高&#xff0c;主要用于共享网络资源&#xff0c;拓扑结构简单&#xff0c;约束少。广域网的范围在100km&#xff0c;例…

千峰React:Hooks(上)

什么是Hooks ref引用值 普通变量的改变一般是不好触发函数组件的渲染的&#xff0c;如果想让一般的数据也可以得到状态的保存&#xff0c;可以使用ref import { useState ,useRef} from reactfunction App() {const [count, setCount] useState(0)let num useRef(0)const h…

[Windows] 免费电脑控制手机软件 极限投屏_正式版_3.0.1 (QtScrcpy作者开发)

[Windows] 极限投屏_正式版 链接&#xff1a;https://pan.xunlei.com/s/VOKJf8Z1u5z-cHcTsRpSd89tA1?pwdu5ub# 新增功能(Future)&#xff1a; 支持安卓14(Supports Android 14)提高投屏成功率(Improve the success rate of mirror)加快投屏速度(Accelerate screen mirrorin…

C++初阶—list类

第一章&#xff1a;list的介绍及使用 1.1 list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指…

【子网掩码计算器:Python + Tkinter 实现】

子网掩码计算器&#xff1a;Python Tkinter 实现 引言代码功能概述代码实现思路1. 界面设计2. 功能实现3. 事件处理 子网掩码计算器实现步骤1. 导入必要的库2. 定义主窗口类 SubnetCalculatorApp3. 创建菜单栏4. 创建界面组件5. 判断 IP 地址类别6. 计算子网信息7. 其他功能函…

入门基础项目(SpringBoot+Vue)

文章目录 1. css布局相关2. JS3. Vue 脚手架搭建4. ElementUI4.1 引入ElementUI4.2 首页4.2.1 整体框架4.2.2 Aside-logo4.2.3 Aside-菜单4.2.4 Header-左侧4.2.5 Header-右侧4.2.6 iconfont 自定义图标4.2.7 完整代码 4.3 封装前后端交互工具 axios4.3.1 安装 axios4.3.2 /src…