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;不同级别配置相同;

  1. enforcing:强制模式。任何违反策略的行为都会被禁止,并且产生警告信息。

  2. permissive:允许模式。违反策略的行为不会被禁止,只产生警告信息。

  3. 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

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

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

相关文章

W6100-EVB-PICO做DNS Client进行域名解析(四)

前言 在上一章节中我们用W6100-EVB-PICO通过dhcp获取ip地址(网关,子网掩码,dns服务器)等信息,给我们的开发板配置网络信息,成功的接入网络中,那么本章将教大家如何让我们的开发板进行DNS域名解…

【C# 基础精讲】C# 数据类型概述

在C#中,数据类型可以分为以下三大类:值类型、引用类型和指针类型。每种类型都具有不同的特点和适用场景,了解这些类型对于编写高效和稳健的C#程序至关重要。下面将依次介绍这三大类数据类型,并列出C#中常见的每种类型。 值类型 值…

【Linux命令详解 | cd命令】Linux系统中用于更改当前工作目录的命令

文章标题 简介一,参数列表二,使用介绍1. 使用cd命令切换到特定目录2. 使用cd命令与路径相关的特殊字符3. 使用cd命令切换到包含空格的目录4. 使用cd命令切换到前一个和后一个目录5. 使用cd命令切换到用户的主目录6. 使用cd命令与绝对路径和相对路径 总结…

宁波银行最新内推码 MK4913

宁波银行最新内推码 MK4913 内推码: MK4913 内推二维码 : 网申路径: 网页端:登录宁波银行招聘官网: https://zhaopin.nbcb.com.cn 选择【校园招聘】-【招聘岗位】手机端:关注【宁波银行招聘】公众号&a…

【物理】带电粒子在磁场和电场中移动的 3D 轨迹研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

无涯教程-Perl - chdir函数

描述 此功能将当前工作目录更改为EXPR,如果未指定,则更改为用户的主目录。此函数调用等效于Unix命令 cd EXPR 。 语法 以下是此函数的简单语法- chdir EXPRchdir返回值 如果失败,此函数返回0,如果成功,则返回1。 例 以下是显示其基本用法的示例代码,假设您在/user/home/…

助力618-Y的混沌实践之路 | 京东云技术团队

一、写在前面 1、混沌是什么? 混沌工程(Chaos Engineering)的概念由 Netflix 在 2010 年提出,通过主动向系统中引入异常状态,并根据系统在各种压力下的行为表现确定优化策略,是保障系统稳定性的新型手段。…

CS 144 Lab Six -- building an IP router

CS 144 Lab Six -- building an IP router 引言路由器的实现测试 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab Six 对应的PDF: Lab Checkpoint 5: building an IP router 引言 在本实验中,你将在现有的NetworkInterface基础上实现一个IP路由器&#xf…

Linux知识点 -- 进程间通信(二)

Linux知识点 – 进程间通信(二) 文章目录 Linux知识点 -- 进程间通信(二)一、System V共享内存1.原理2.申请共享内存3.System V共享内存的使用4.为共享内存添加访问控制 二、信号量(概念理解)1.概念2.信号量…

OpenCV之信用卡识别实战

文章目录 代码视频讲解模板匹配文件主程序(ocr_template_match.py)myutils.py 代码 链接: https://pan.baidu.com/s/1KjdiqkyYGfHk97wwgF-j3g?pwdhhkf 提取码: hhkf 视频讲解 链接: https://pan.baidu.com/s/1PZ6w5NcSOuKusBTNa3Ng2g?pwd79wr 提取码: 79wr 模板匹配文件 …

Ubuntu开机自启服务systemd.service配置教程(Ubuntu服务)(Linux服务)upstart

文章目录 为什么要将程序配置成服务?1. 自动启动2. 后台运行3. 定时重启4. 简化管理5. 整合系统 版本支持1. Ubuntu 14.04及更早版本:使用upstart作为默认的init系统/etc/rc.local旧版本新版本 2. Ubuntu 15.04到16.04版本:默认使用systemd作…

【敏捷开发】测试驱动开发(TDD)

测试驱动开发(Test-Driven Development,简称TDD)是敏捷开发模式中的一项核心实践和技术,也是一种设计方法论。TDD有别于以往的“先编码,后测试”的开发模式,要求在设计与编码之前,先编写测试脚本…

1310. 数三角形

题目链接:https://www.acwing.com/problem/content/1312/ 首先不考虑三点共线的情况一共有 种,现在来计算三点共线的情况 1.三点在一条直线上 2.三点在一条竖线上 3.三点在一条斜线上,正反斜线对称,仅需考虑一边的情况 如果…

14-5_Qt 5.9 C++开发指南_基于HTTP 协议的网络应用程序

文章目录 1. 实现高层网络操作的类2. 基于HTTP协议的网络文件下载3.源码3.1 可是化UI设计3.2 mainwindow.h3.3 mainwindow.cpp 1. 实现高层网络操作的类 Qt 网络模块提供一些类实现 OSI 7 层网络模型中高层的网络协议,如 HTTP、FTP、SNMP等,这些类主要是…

Netty使用和常用组件辨析

Netty 使用和常用组件 简述 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId <version>4.1.42.Final </version> <scope>compile</scope> </dependency> Netty 的优势 1 、 AP…

【小吉带你学Git】idea操作(2)_版本和分支的相关操作

&#x1f38a;专栏【Git】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f354;版本⭐首先创建一个项目⭐添加暂存区⭐提交本地库&#x1f33…

压力测试与测试工具jmeter的介绍

目录 一、性能指标 二、jmeter &#xff08;一&#xff09;JMeter 安装 &#xff08;二&#xff09;JMeter 压测示例 1、添加线程组 2、添加 HTTP 请求 3、添加监听器 4、启动压测&查看分析结果 &#xff08;三&#xff09;JMeter Address Already in use 错误解决 压力测…

yum出现Could not retrieve mirrorlist解决方法

Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org/?release6&archi386&repoos error was 14: PYCURL ERROR 6 - “Couldn’t resolve host ‘mirrorlist.centos.org…

【web逆向】全报文加密及其登录流程的分析案例

aHR0cHM6Ly9oZWFsdGguZWxkZXIuY2NiLmNvbS9zaWduX2luLw 涉及加密库jsencrypt 定位加密点 先看加密的请求和响应&#xff1a; 全局搜索加密字段jsondata&#xff0c;这种非特定参数的一般一搜一个准&#xff0c;搜到就是断点。起初下的断点没停住&#xff0c;转而从调用栈单步…

K8S系列文章之 kubeasz部署K8S环境

自动化安装方式&#xff08;kubeasz&#xff09;* 生产环境推荐&#xff08;首次安装下载相关配置和安装包&#xff09;是基于Ansible实现的部署工具 简单介绍 每一具体k8s集群的详细配置参数文件 Ansible 任务配置文件 镜像安装包 安装部署步骤 前提 &#xff1a; 保证Ansib…