Rocky(centos) jar 注册成服务,能开机自启动
概述
涉及:1)sh 无法直接运行java命令,可以软连,此处是直接路径
2)sh脚本报一堆空格换行错误:需将转成unix标准格式;
#切换到上传的脚本路径
dos2unix 脚本文件名.sh
2)SELINUX 授权允许启动sh 脚本
3)SELINUX 授权允许启动写入的日志文件
软连接方法(无需操作)
cd /usr/bin
ln -s -f /usr/local/jdk17/java
操作步骤
1、新建sh 脚本
新建:service_script.sh 脚本
注:需要配置
1)jdk的路径;2)程序日志路径;3)java 名称
#!/bin/bash
#这里替换为jar包名字
APP_NAME=hy-admin.jar
#根据实际情况修改参数
JVM="-server -Xms4g -Xmx4g"
#APPFILE_PATH="-Dspring.config.location=/usr/local/config/application.properties"export JAVA_HOME=/usr/local/jdk17
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin#使用说明,用来提示输入参数
usage() { echo "Usage: sh 执行脚本.sh [start|stop|restart|status|log|backup] [port]" exit 1
} port=$2
#检查指定端口是否是有程序在运行
is_exist(){# 默认端口if [ "${port}" == "" ]; then# 默认使用9000port=9000fi # 获取端口占用的进程号pid=`lsof -i:$port | awk 'NR == 2' | awk '{print $2}'`#如果不存在返回1,存在返回0if [ -z "${pid}" ]; then return 1 else return 0 fi
} #启动方法
start(){ is_exist if [ $? -eq "0" ]; then echo "${port} 端口已经被 ${pid} 进程占用" else #nohup java $JVM -jar $APPFILE_PATH $APP_NAME > /dev/null 2>&1 #后台启动jar包,且控制环境变量,根据实际情况修改吧。#nohup java $JVM -jar $APP_NAME --spring.profiles.active=prod > /dev/null 2>&1 &cd /data/hy-cost-grain-proecho "">log.filenohup ${JAVA_HOME}/bin/java -jar ${APP_NAME} --server.port=${port} >log.file 2>&1 &echo " ${APP_NAME} 进程 $! 在 ${port} 端口启动中......"logfi
} #停止方法
stop(){ is_exist if [ $? -eq "0" ]; then kill -9 $pidecho "${port} 端口的进程 ${pid} 已经被中断" else echo "${port} 端口未启用" fi
} #输出运行状态
status(){ is_exist if [ $? -eq "0" ]; then echo "${port} 端口已被进程 ${pid} 占用" else echo "${port} 端口未被占用" fi
}
#重启
restart(){ stop start
} #日志
log(){# 输出实时日志tail -n 100 -f log.file
}#备份
backup(){#根据需求自定义备份文件路径。BACKUP_PATH=./back/#获取当前时间作为备份文件名BACKUP_DATE=`date +"%Y%m%d(%H:%M:%S)"`echo 'backup file ->'$BACKUP_PATH$BACKUP_DATE'.jar'#备份当前jar包cp -r ./$APP_NAME $BACKUP_PATH$BACKUP_DATE'.jar'
}#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; "log") log ;; "backup") backup ;; *)
usage
;;
esac
注意上传的.sh脚本转成系统可识别的unix编码格式的文件
上传后切换到脚本路径:运行如下命令
dos2unix service_script.sh
2、生成日志文件并授权
SELINUX 允许启动写入日志的文件;2-3步骤,理论也可以关闭SELINUX
echo ''>/data/hy-cost-grain-pro/log.file
chmod 777 /data/hy-cost-grain-pro/log.file#授予启动脚本写入
semanage fcontext -a -t var_log_t /data/hy-cost-grain-pro/log.file
restorecon -Rv /data/hy-cost-grain-pro/log.file#查看授权
semanage fcontext -l|grep var_log_t
3、授权启动脚本启动权限
设置 SELINUX 允许启动运行的脚步,2-3步骤,理论也可以关闭SELINUX
#允许运行启动脚本
semanage fcontext -a -t init_exec_t /data/hy-cost-grain-pro/service_script.sh
restorecon -R -v /data/hy-cost-grain-pro/service_script.sh#查看授权
semanage fcontext -l|grep init_exec_t
4、新建启动服务文件
[Unit]
Description=java-cost-grain-pro
After=syslog.target
[Service]
Type=simple
#延迟启动,如果jar包需要运用到数据库,所以在这加了睡眠10秒
ExecStartPre=/bin/sleep 8
ExecStart=/data/hy-cost-grain-pro/service_script.sh start
ExecReload=/data/hy-cost-grain-pro/service_script.sh restart
ExecStop=/data/hy-cost-grain-pro/service_script.sh stop[Install]
WantedBy=multi-user.target
5、上传并加入开机自动
上传至 :/etc/systemd/system
#刷新服务配置
systemctl daemon-reload
# 启动服务
systemctl start java-grain-9000.service
# 服务开机自启
systemctl enable java-grain-9000.service
# 停止服务
systemctl stop java-grain-9000.service
# 查看服务状态
systemctl status java-grain-9000.service -l
重启,测试开机自启,启动花了15s
reboot

可能问题:
1)无:lsof 命令
yum install lsof

2) SELinux 介绍
SELinux 有三种工作模式,注意:没有特别安全要求,可以使permissive;不同级别配置相同;
-
enforcing:强制模式。任何违反策略的行为都会被禁止,并且产生警告信息。
-
permissive:允许模式。违反策略的行为不会被禁止,只产生警告信息。
-
disabled:关闭 SELinux。
3)selinux 永久关闭
一、临时关闭
setenforce 0
注意:重启系统后还会开启。
二、永久关闭
1、vim /etc/selinux/config,SELINUX=disabled,然后保存退出。
2、 vim /etc/sysconfig/selinux,SELINUX=disabled,然后保存退出。
注意:如未生效重启即可
三、验证方法
输入命令:getenforce

4)若切换路径的数据库也能自启:请参考本人博客
Centos(rocky,red Hat) yum 安装mysql,切换路径并设置开机自启
Centos(rocky,red Hat) yum 安装mysql,切换路径并设置开机自启_rocky和red hat_小云小白的博客-CSDN博客1、安装方式介绍mysql安装共3中方式1)yum安装,最简单的方式2)rpm包安装,切记下载相应系统的 稳定版 源码包,相对较简单3)压缩包安装:自由度高,但配置相应复杂,且需要自己注册自启服务注:1,2,3无法在一台机器上共存,1,2可以通过mulit-mysql启动多个服务看,但无法实现:单机上的myql主从只有3方式支持1台安装多个mysql服务,实现mysql主从一、安装步骤1.获取最新的yum rmp包地址下载地址:MySQL :: MySQL Commu_rocky和red hathttps://blog.csdn.net/qq_26408545/article/details/124114793?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22124114793%22%2C%22source%22%3A%22qq_26408545%22%7D
相关文章:
Rocky(centos) jar 注册成服务,能开机自启动
概述 涉及:1)sh 无法直接运行java命令,可以软连,此处是直接路径 2)sh脚本报一堆空格换行错误:需将转成unix标准格式; #切换到上传的脚本路径 dos2unix 脚本文件名.sh 2)SELINUX …...
科大讯飞-鸟类分类挑战赛-测试【1】
科大讯飞-鸟类分类挑战赛-测试【1】 1. 比赛说明2. EfficientNet测试2.1 **模型搭建:**2.2 **模型训练:**2.3 训练过程可视化2.4 一些报错解决:1. 比赛说明 背景: 随着生态环境的不断变化和人类对自然资源的过度开发,世界各地的鸟类数量和种类正在发生着巨大的变化。为了更…...
两行CSS让页面提升渲染性能
content-visibility是CSS新增的属性,主要用来提高页面渲染性能,它可以控制一个元素是否渲染其内容,并且允许浏览器跳过这些元素的布局与渲染。 content-visibility: hidden的效果与display: none类似其区别在于: content-visibi…...
UniApp中tabbar设置了position: fixed以及bottom:0后出现一条缝隙,看到了后面的内容
问题描述 解决方法 直接将bottom设置成-2px即可...
设计模式行为型——责任链模式
目录 什么是责任链模式 责任链模式的实现 责任链模式角色 责任链模式类图 责任链模式举例 责任链模式代码实现 责任链模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是责任链模式 责任链模式(Chain of Responsibility Pattern)又叫职…...
Xamarin.Android中Intent的使用
目录 1、说明2、使用方法2.1 常用方法2.2 调用系统应用 3、参考资料 1、说明 在Android开发中常常会用到Intent进行不同活动启动,整理资料如下 2、使用方法 2.1 常用方法 1、一般情况而言,都是使用如下的方式进行调用 Intent intent new Intent(th…...
matplotlib绘制方波圆周分解动画
1 方波的圆周分解 在学习傅里叶变换的时候,有一个经典的示例是方波的分解。我们知道,方波可以分解为无数个正弦波的叠加。而正弦波,又可以看作是圆周运动在一条直线上的投影。当时为了理解这个事情,恐怕大家也花了不少时间。 学…...
vue3+ts 实现枚举
首先 index.ts 中定义枚举 export const fruit [{key:1,name:苹果,},{key:11,name:草莓},{key:5,name:香蕉,},{key:51,name:葡萄,},{key:6,name:橙子},{key:7,name:哈密瓜},{key:10,name:西瓜}, ]; 接口返给的数据是一个对象 feeMap{ 1:200, 2&…...
【Python】5分钟了解11个最佳的Python编译器和解释器
11个最佳Python编译器和解释器 1. Brython2. Pyjs3. WinPython4. Skulpt5. Shed Skin6. Active Python7. Transcrypt8. Nutika9. Jython10. CPython11. IronPython结论原文链接 Python是一门初学者的编程语言。它是一种高级语言,非常灵活、解释性和面向对象的语言。…...
如何安装、部署、启动Jenkins
一、测试环境 Linux系统 Centos 7 二、安装步骤: 1、安装jdk 我安装的是jdk8,此处就不多说了,自己百度哈,很简单 2、安装jenkins 首先依次执行如下三个命令: 2.1、导入镜像: [rootcentos7 ~]# sudo …...
sqlalchemy flask长时间未使用 导致数据库连接失效
临时解决方案:在正式运行定时任务之前,先跑一个session.query(),相当于唤醒连接。 参考 https://blog.csdn.net/sinat_42483341/article/details/103723691...
Ubuntu 20.04 系统或图像界面卡死或完全无响应处理方法
Ubuntu 20.04 系统或图像界面卡死或完全无响应处理方法 问题背景无需重启方法安全重启方法 问题背景 Ubuntu 20.04在安装驱动程序时系统突然无响应,终端也无法运行;考虑到尽量不破坏系统,不希望强制上下电重启机器,以免损坏文件系…...
Linux编辑器 - vim使用
1.vim的基本概念 Vim是一个广泛使用的文本编辑器,它是在Unix和Linux系统中常用的命令行文本编辑器之一。 vim的主要三种模式 ( 其实有好多模式,目前掌握这 3 种即可 ), 分别是 命令模式 ( command mode )、 插入模式 ࿰…...
【Windows】磁盘快捷修复
【Windows】磁盘快捷修复 1、背景2、关于Chkdsk3、示例 1、背景 前段时间使用U盘拷贝文件过程中,突然发现U盘无法读取了,U盘里面存储的数据也无法获取。 然后使用windows系统的chkdsk命令进行修复。 chkdsk全称:checkdisk,即磁盘…...
Java 线程的多种状态
前言 在前文中详细介绍了线程的启动、中断、休眠、等待。本文详细介绍线程的多种状态。 获取线程的当前状态代码是: 线程对象.getState(); 目录 前言 一、NEW 二、RUNNABLE 三、BLOCKED 四、WAITNG 五、TIMED_WAITNG 六、TERMINATED 结语 一、NEW Thread 对…...
AI绘画| 迪士尼风格|可爱头像【附Midjourney提示词】
Midjourney案例分享 图片预览 迪士尼风格|可爱头像 高清原图及关键词Prompt已经放在文末网盘,需要的自取 在数字艺术的新时代,人工智能绘画已经迅速崭露头角。作为最先进的技术之一,AI绘画结合了艺术和科学,开启了一…...
【浪费了我两个小时时间】Microsoft store无法加载页面0x80131500
绕的圈,踩的坑 谷歌搜索, newbing搜索都叫我清理缓存,重新安装等方法。 还被这篇文章误导了一下:微软应用商店错误代码0x80072EFD怎么办?(已解决) 加上重启电脑各种试不行。 最后想到要去改代…...
【动态规划】子序列系列
文章目录 动态规划(子序列系列)1. 最长递增子序列2. 摆动序列3. 最长递增子序列的个数4. 最长数对链5. 最长定差子序列6. 最长的斐波那契子序列的长度7. 最长等差数列8. 等差数列划分 || - 子序列 动态规划(子序列系列) 1. 最长递…...
URL存储解锁数据管理的新思路,重新定义数据传输与共享(@vue/repl)
Thinking系列,旨在利用10分钟的时间传达一种可落地的编程思想。 近日,在了解 vue/repl 相关内容,其通过 URL 进行数据存储,感觉思路惊奇,打开了新方式。 首先,通过 URL 存储最大的便利是:无需服…...
matlab程序中文乱码
不同版本的matlab共存在GBK(即,ANSI)和UTF-8两种编码方式,因此可能会出现乱码问题。 第一步:在matlab的命令行窗口输入指令,查看当前编码方式 feature(locale) 第二步:用Notepad打开文件&…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...


