Rocky(centos) jar 注册成服务,能开机自启动

news2024/12/24 2:10:07

概述

涉及: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
    # 默认使用9000
	port=9000
    fi 
    # 获取端口占用的进程号
    pid=`lsof -i:$port | awk 'NR == 2' | awk '{print  $2}'`
    #如果不存在返回1,存在返回0
    if [ -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-pro
	echo "">log.file
	nohup ${JAVA_HOME}/bin/java -jar ${APP_NAME} --server.port=${port} >log.file  2>&1 &
	echo " ${APP_NAME} 进程 $! 在 ${port} 端口启动中......"
	log
    fi
} 

#停止方法 
stop(){ 
    is_exist 
    if [ $? -eq "0" ]; then 
        kill -9 $pid
	echo "${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.coloradmin.cn/o/828443.html

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

相关文章

Ubuntu18.04安装ROS

ROS 安装前的准备 (1)为了安装顺利使用国内下载源,(我个人linux使用了代理) 清华大学源 sudo sh -c ‘. /etc/lsb-release && echo “deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $DISTRIB_CODENA…

第四讲:利用ADO方式连接Access数据库

【分享成果,随喜正能量】最值得信赖的,其实是自己从孤独中得来的东西,而不是别人给予自己的东西。每个人都是一座孤岛,有些人一生都在想要逃离这座岛,有些人一生都在创造并丰富自己这座岛。。 《VBA数据库解决方案》教…

水环境地质3D可视化综合管理软件提高运维效率

谈起数字孪生技术,总让人兴奋不已,这种将物理实体的数字化模型与实际物理实体相结合、以虚控实的技术,是数字化转型和第四次工业革命的重要载体,那么在地质行业中,数字孪生有哪些应用场景? 在地质勘探中, …

潜在客户生成最实用指南,你还在等什么?

潜在客户是指对您的产品或服务表现出兴趣的人,它们提供个人识别信息,您的团队可以使用这些信息来跟进他们。随着越来越多的营销渠道涌现,接触新客户和开展有效的潜在客户生成活动变得越来越困难。赢得新的潜在客户听起来很困难,但…

【B/S手术麻醉系统源码】手术麻醉管理系统在临床中的应用

手术麻醉管理系统是临床麻醉工作中一个不容忽视的环节,麻醉医生必须对病人在麻醉手术过程中的情况与体征变化,采取的处理措施及术后随访等全过程作出及时、真实、确切的记录。麻醉记录不仅有助于确保临床麻醉准确,总结经验教训,提…

kcc呼叫中心语音转写功能

呼叫中心是客户和企业之间沟通的一个桥梁,也是客户服务和客户关系的一个重要组成部分。通过呼叫中心,企业可以建立起一个以客户为中心的服务模式,为客户提供高质量、高效率的服务,对于塑造企业形象,提高客户满意度&…

txt替换字符为换行

txt替换字符为换行 txt如何批量将同一个符号替换成换行符 2023-01-26 03:16:03 有时候看到网页有些排列的很整齐的文本想复制使用,可是复制下来放到txt后不分行,要么就是中间隔着一些公用的符号。那么我们怎么才能快速的让文本按原来的形式分行显示在…

一百三十九、Kettle——Linux安装Kettle8.2

一、目的 为了方便海豚调度kettle任务,在Linux上安装kettle 二、kettle版本与前提 版本:kettle8.2 pdi-ce-8.2.0.0-342 前提:Linux已经安装好jdk 三、安装步骤 (一)打开安装包所在地 [roothurys22 ~]# cd …

让SpringBoot不再需要Controller、Service、DAO、Mapper,卧槽!这款工具绝了

Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具,使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布,一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中…

小鹏遭遇“动荡”,自动驾驶副总裁吴新宙离职,现已完成团队过渡

根据最新消息,小鹏汽车的自动驾驶副总裁吴新宙宣布将加入全球GPU芯片巨头英伟达。吴新宙将成为该公司全球副总裁,直接向英伟达全球CEO黄仁勋汇报。小鹏汽车董事长何小鹏和吴新宙本人已在微博上确认该消息,并解释离职原因涉及家庭和多方面因素…

拿捏--->逻辑推断问题(猜凶手+猜名次)

文章目录 猜凶手问题题目描述算法思路代码实现 猜名次问题题目描述算法思路代码实现 猜凶手问题 题目描述 算法思路 代码实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {char killer 0;for (killer A; killer < D; killer){if ((killer ! …

Rpc异步日志模块

Rpc异步日志模块作用 在一个大型分布式系统中&#xff0c;任何部署的分布式节点都可能发生崩溃&#xff0c;试想如果用普通的办法&#xff0c;即先排查哪个节点down掉了&#xff0c;找到down掉的节点后采取调试工具gdb调试该节点&#xff0c;进而排查宕机的原因。这中排查方法…

Redis的缓存、消息队列、计数器应用

目录 一、redis的应用场景 二、redis如何用于缓存 三、redis如何用于消息队列 四、redis如何用于计数器 一、redis的应用场景 Redis在实际应用中有广泛的应用场景&#xff0c;以下是一些常见的Redis应用场景&#xff1a; 缓存&#xff1a;Redis可以用作缓存层&#xff0c;…

高性能远程通信框架grpc基本使用

文章目录 一、了解grpc二、关于protobuf三、试玩grpc3.1整个工程目录3.2 proto文件编写3.3 使用maven protobuf插件转换.proto文件3.4 Grpc服务端业务实现类3.5 pom参考3.6 grpc client调用 一、了解grpc 谷歌开源远程进程调用框架&#xff0c;支持多语言系统间通信&#xff0…

百分点科技跻身中国智慧应急人工智能解决方案市场前三

近日&#xff0c; 全球领先的IT市场研究和咨询公司IDC发布了《中国智慧应急解决方案市场份额&#xff0c;2022》报告&#xff0c;数据显示&#xff0c;2022年中国智慧应急整体市场为104亿元人民币。其中&#xff0c;智慧应急人工智能解决方案子市场备受关注&#xff0c;百分点科…

小主机折腾记16

7月折腾了 1.2500s&#xff0c;2550k&#xff0c;e3 1225的性能测试 结果如下图 总结如下&#xff1a; a.2500s e3 1225 2390t 差别不大 b.1333频率相对1066频率内存提升12%左右 c.为什么少了2550k&#xff0c;因为装上去风扇尬转&#xff0c;没画面&#xff0c;我猜是因为…

Shell脚本学习-Shell函数

函数的作用就是将程序里多次被调用的相同代码组合起来&#xff08;函数体&#xff09;&#xff0c;并为其取一个名字&#xff0c;即函数名。其他所有想重复调用这部分代码的地方都只需要调用这个名字就可以了。当需要修改这部分代码时候&#xff0c;只需要修改函数体内的这部分…

【网络编程】select

主旨思想 首先要构造一个关于文件描述符的列表&#xff0c;将要监听的文件描述符添加到该列表中 调用一个系统函数(select)&#xff0c;监听该列表中的文件描述符&#xff0c;直到这些描述符中的一个或者多个进行I/O操作时&#xff0c;该函数才返回 这个函数是阻塞函数对文件描…

vue 图片回显标签

第一种 <el-form-item label"打款银行回单"><image-preview :src"form.bankreceiptUrl" :width"120" :height"120"/></el-form-item>// 值为 https://t11.baidu.com/it/app106&fJPEG&fm30&fmtauto&…

一篇五分生信临床模型预测文章代码复现——Figure 10.机制及肿瘤免疫浸润(二)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…