Linux学习之自启动脚本

Linux学习
placeholder image
admin 发布于:2023-05-20 12:41:54
阅读:loading

基本介绍

之前在学习Spring Cloud 系列技术那段时间,经常会使用到Nacos等其它中间件,每次开启虚拟机后还需要额外手动执行几个启动应用程序的脚本,也算稍显麻烦,于是就实践了一下Linux启动时自动运行脚本的实现,时隔半年才来整理汇总实现,所以本文所述的实践过程也许会有所遗漏,不过也是在尽量还原当时的实践,详见下文。

本文的自启动脚本的实现顺序大致为:

(1)在“/etc/rc.d/init.d”目录创建脚本文件“chendd-service”,并赋可执行权限;

(2)编写chendd-service脚本中的命令脚本;

(3)使用“chkconfig”命令将该脚本添加至系统启动可运行中,并启动该服务;

本文的自启动脚本的命令行主要是启动Nacos和zipkin两个组件,并记录启动命令的执行结果,包括运行脚本前置输出提示以及脚本执行原命令和命令输出结果等,最终将这些输出结果追加至自定义的日志文件中,参考启动脚本文件如下:

#!/bin/bash
#chkconfig: 2345 80 90
#description:auto_run
if [ ! -d "/app/service" ];then
    mkdir "/app/service" -p
	touch "/app/service/output.log"
fi		
# 当前日期和时间追加至文件中,记录执行日志
echo $(date +%F%n%T) >> /app/service/output.log

/bin/sleep 5s

JAVA_HOME=/app/jdk/jdk8

echo "准备启动nacos..." >> /app/service/output.log
/bin/sh -c "/app/nacos-server/bin/startup.chendd.sh" >> /app/service/output.log 

echo "准备启动zipkin..." >> /app/service/output.log
/bin/sh -c "/app/zipkin/startup.sh" >> /app/service/output.log

echo "脚本执行完毕..." >> /app/service/output.log

脚本说明

(1)前面3行照写;

(2)第4行if逻辑为判断“/app/service”文件夹是否存在,如果不存在则创建,并同时创建日志文件“/app/service/output.log”;

(3)第9行是脚本运行时输出当前日期时间至日志文件,输出参考“2023-05-20 10:20:30”,意为在脚本执行前输出提示信息;

(4)第11行为休眠5秒钟;

(5)第13行定义环境变量JAVA_HOME,在本文所执行的命令行范围内有效;

(6)第15行在日志文件中输出将要执行Nacos脚本的提示;

(7)第16行执行Nacos的启动脚本,并将执行结果追加至日志文件中;

(8)第18行在日志文件中输出将要执行zipkin的脚本的提示;

(9)第19行执行zipkin的启动脚本,并将执行结果追加至日志文件中;

(10)第21行为脚本执行完毕的提示,追加至日志文件中;

参考结果

2023-05-20 09:00:50

准备启动nacos...

/app/jdk/jdk8/bin/java -Djava.ext.dirs=/app/jdk/jdk8/jre/lib/ext:/app/jdk/jdk8/lib/ext  -server -Xms1g -Xmx1g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/nacos-server/logs/java_heapdump.hprof -XX:-UseLargePages -Dnacos.member.list= -Xloggc:/app/nacos-server/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/app/nacos-server/plugins/health,/app/nacos-server/plugins/cmdb,/app/nacos-server/plugins/selector -Dnacos.home=/app/nacos-server -jar /app/nacos-server/target/nacos-server.jar  --spring.config.additional-location=file:/app/nacos-server/conf/ --logging.config=/app/nacos-server/conf/nacos-logback.xml --server.max-http-header-size=524288

nacos is starting with cluster

nacos is starting,you can check the /app/nacos-server/logs/start.out

准备启动zipkin...

nohup /app/jdk/jdk8/bin/java -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/zipkin/logs/java_heapdump.hprof -XX:-UseLargePages -Xloggc:/app/zipkin/logs/java_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -jar /app/zipkin/zipkin.jar --STORAGE_TYPE=mysql --MYSQL_HOST=192.168.244.1 --MYSQL_TCP_PORT=5528 --MYSQL_USER=root --MYSQL_PASS=123456 --MYSQL_DB=chendd-zipkin >> /app/zipkin/logs/nohup2023-05-20.out 2>&1 &

脚本执行完毕...

参考命令

#查看服务列表
chkconfig --list

#增加脚本文件至服务中
chkconfig --add chendd-service

#增加服务的可执行权限
chmod +x chendd-service

#设置服务的启动状态
chkconfig chendd-service on

#设置服务的关闭状态
chkconfig chendd-service off

#删除可执行服务
chkconfig --del chendd-service


 点赞


 发表评论

当前回复:作者

 评论列表


留言区