百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

CentOS 开机启动脚本

nanshan 2024-12-14 14:12 10 浏览 0 评论

# 最终结果

在 /root 目录下新建启动脚本 boot.sh

# 启动 redis

redis-server /usr/local/soft/redis/redis.conf

# nginx

nginx

# 启动 Elasticsearch

# 启动脚本 /etc/init.d/es

# 启动java程序

check_elasticsearch_boot_success(){

result=$(curl http://localhost:9200 | grep "cluster_name" )

while [ "$result" == "" ]

do

echo "result: ${result} not running..."

sleep 3s

result=$(curl http://localhost:9200 | grep "cluster_name" )

done

}

check_elasticsearch_boot_success

source /etc/profile.d/java.sh

cd /home/source/api

nohup java -Xmx256m -Xms128m -Xss256k -jar hhw-admin.jar --spring.profiles.active=test > logs/admin.log 2>&1 &

nohup java -Xmx256m -Xms128m -Xss256k -jar hhw-api.jar --spring.profiles.active=test > logs/api.log 2>&1 &


添加执行权限 `chmod +x boot.sh`

编辑 `/etc/rc.d/rc.local` ,在结尾处输入 `sh /root/boot.sh &`

给 `/etc/rc.d/rc.local` 添加执行权限 `chmod +x /etc/rc.d/rc.local`

然后 reboot 测试效果

# 心路历程

在 /root 目录下新建启动脚本 boot.sh

```

# 启动 redis

redis-server /usr/local/soft/redis/redis.conf

# nginx

nginx

# 启动 Elasticsearch

# 启动脚本 /etc/init.d/es

# 启动java程序

source /etc/profile.d/java.sh

cd /home/source/api

nohup java -Xmx256m -Xms128m -Xss256k -jar hhw-admin.jar --spring.profiles.active=test > logs/admin.log 2>&1 &

nohup java -Xmx256m -Xms128m -Xss256k -jar hhw-api.jar --spring.profiles.active=test > logs/api.log 2>&1 &

```

添加执行权限 `chmod +x boot.sh`

编辑 `/etc/rc.d/rc.local` ,在结尾处输入 `sh /root/boot.sh &`

给 `/etc/rc.d/rc.local` 添加执行权限 `chmod +x /etc/rc.d/rc.local`

然后 reboot 测试效果

效果不理想,并未启动成功,原因是我的java程序里使用了 Elasticsearch ,Elasticsearch 启动不成功的话,我的程序也会失败

于是 我想着启动java程序前,延时一会儿,等Elasticsearch启动了,再启动java程序

于是 脚本变成了这样

# 启动 redis

redis-server /usr/local/soft/redis/redis.conf

# nginx

nginx

# 启动 Elasticsearch

# 启动脚本 /etc/init.d/es

# 启动java程序

# 休眠1分钟

sleep 3s

source /etc/profile.d/java.sh

cd /home/source/api

nohup java -Xmx256m -Xms128m -Xss256k -jar hhw-admin.jar --spring.profiles.active=test > logs/admin.log 2>&1 &

nohup java -Xmx256m -Xms128m -Xss256k -jar hhw-api.jar --spring.profiles.active=test > logs/api.log 2>&1 &

```


```

reboot 再次测试

结果发现成功了一个,另一个失败了。于是我又改成写个循环,使用 `[ $(ps -aux | grep elasticsearch | wc -l) -le 1 ]` 判断Elasticsearch是否启动成功,不成功就休眠3秒;直到Elasticsearch启动成功。

代码变成了这样:

# 启动 redis

redis-server /usr/local/soft/redis/redis.conf

# nginx

nginx

# 启动 Elasticsearch

# 启动脚本 /etc/init.d/es

# 启动java程序

while [ $(ps -aux | grep elasticsearch | wc -l) -le 1 ]

do

echo -e "检测一次,未启动"

# 如果Elasticsearch还未启动,休眠3秒再重新检测是否启动

sleep 3s

done

source /etc/profile.d/java.sh

cd /home/source/api

nohup java -Xmx256m -Xms128m -Xss256k -jar hhw-admin.jar --spring.profiles.active=test > logs/admin.log 2>&1 &

nohup java -Xmx256m -Xms128m -Xss256k -jar hhw-api.jar --spring.profiles.active=test > logs/api.log 2>&1 &


reboot 再次尝试

成功了,??

本着负责任的态度,第二天,我又reboot 测试了一下,哦豁,又有一个程序启动失败了。打开日志一看,还是同样的问题,Elasticsearch未启动成功。

我就想 ps -aux | grep elasticsearch | wc -l 是通过判断输出的条数大于 1 来决定是否启动的,二Elasticsearch启动是比较慢的,有没有可能Elasticsearch还在启动的过程中,ps -aux | grep elasticsearch | wc -l 返回的条数就大于1了呢?

验证之后,果然是这样。

然后改成判断 curl http://localhost:9200 的返回结果来判断是否启动成功

# 启动 redis

redis-server /usr/local/soft/redis/redis.conf

# nginx

nginx

# 启动 Elasticsearch

# 启动脚本 /etc/init.d/es

# 启动java程序

check_elasticsearch_boot_success(){

result=$(curl http://localhost:9200 | grep "cluster_name" )

while [ "$result" == "" ]

do

echo "result: ${result} not running..."

sleep 3s

result=$(curl http://localhost:9200 | grep "cluster_name" )

done

}

check_elasticsearch_boot_success

source /etc/profile.d/java.sh

cd /home/source/api

nohup java -Xmx256m -Xms128m -Xss256k -jar hhw-admin.jar --spring.profiles.active=test > logs/admin.log 2>&1 &

nohup java -Xmx256m -Xms128m -Xss256k -jar hhw-api.jar --spring.profiles.active=test > logs/api.log 2>&1 &


这回总可以了吧 等待时间验证

# 鸣谢


- [# Linux Shell中的延时函数](https://blog.csdn.net/eager7/article/details/8127365?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-8127365-blog-109198340.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-8127365-blog-109198340.pc_relevant_default&utm_relevant_index=2)

- [# Linuxshell脚本之循环语句](https://blog.csdn.net/lltyyds/article/details/120885699)

- [# shell脚本判断程序是否启动](https://blog.csdn.net/amwha/article/details/118307975)

- [# shell 判断字符串是否包含另一个字符串](https://blog.csdn.net/u011250186/article/details/107862799)

相关推荐

Let’s Encrypt免费搭建HTTPS网站

HTTPS(全称:HyperTextTransferProtocoloverSecureSocketLayer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入...

使用Nginx配置TCP负载均衡(nginx tcp负载)

假设Kubernetes集群已经配置好,我们将基于CentOS为Nginx创建一个虚拟机。以下是实验种设置的详细信息:Nginx(CenOS8Minimal)-192.168.1.50Kube...

Nginx负载均衡及支持HTTPS与申请免费SSL证书

背景有两台minio文件服务器已做好集群配置,一台是192.168.56.41:9000;另一台是192.168.56.42:9000。应用程序通过Nginx负载均衡调用这两台minio服务,减轻单点...

HTTPS配置实战(https配置文件)

原因现在网站使用HTTPS是规范操作之一,前些日子买了腾讯云服务,同时申请了域名http://www.asap2me.top/,目前该域名只支持HTTP,想升级为HTTPS。关于HTTPS的链接过程大...

只有IP地址没有域名实现HTTPS访问方法

一般来说,要实现HTTPS,得有个注册好的域名才行。但有时候呢,咱只有服务器的IP地址,没注册域名,这种特殊情况下,也能照样实现HTTPS安全访问,按下面这些步骤来就行:第一步,先确认公网...

超详解:HTTPS及配置Django+HTTPS开发环境

众所周知HTTP协议是以TCP协议为基石诞生的一个用于传输Web内容的一个网络协议,在“网络分层模型”中属于“应用层协议”的一种。在这里我们并不研究该协议标准本身,而是从安全角度去探究使用该协议传输数...

Godaddy购买SSL之后Nginx配置流程以及各种错误的解决

完整流程:参考地址:https://sg.godaddy.com/zh/help/nginx-generate-csrs-certificate-signing-requests-3601生成NGI...

Nginx从安装到高可用,一篇搞定(nginx安装与配置详解)

一、Nginx安装1、去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本2、上传nginx到linux系统3、安装依赖环境(1)安装gcc环境yuminstallgc...

阿里云免费证书申请,配置安装,使用tomcat,支持http/https访问

参数说明商品类型默认已选择云盾证书服务(无需修改)。云盾证书服务类型SSL证书服务的类型。默认已选择云盾SSL证书(无需修改),表示付费版SSL证书。如果您需要免费领取或付费扩容DV单域名证书【免费试...

你试过两步实现Nginx的规范配置吗?极速生成Nginx配置小工具

NGINX是一款轻量级的Web服务器,最强大的功能之一是能够有效地提供HTML和媒体文件等静态内容。NGINX使用异步事件驱动模型,在负载下提供可预测的性能。是当下最受欢迎的高性能的Web...

从零开始搭建HTTPS服务(搭建https网站)

搭建HTTPS服务的最初目的是为了开发微信小程序,因为wx.request只允许发起HTTPS请求,并且还必须和指定的域名进行网络通信。要从零开始搭建一个HTTPS的服务需要下面4...

群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问

安全第一步,群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问【新手导向】NAS本质还是一个可以随时随地访问的个人数据存储中心,我们在外网访问的时候,特别是在公网IP下,其实会面临着很多安...

让网站快速升级HTTPS协议提高安全性

为什么用HTTPS网络安全越来越受到重视,很多互联网服务网站,都已经升级改造为https协议。https协议下数据包是ssl/tcl加密的,而http包是明文传输。如果请求一旦被拦截,数据就会泄露产生...

用Https方式访问Harbor-1.9版本(https访问流程)

我上周在头条号写过一篇原创文章《Docker-Harbor&Docker-kitematic史上最详细双系统配置手册》,这篇算是它的姊妹篇吧。这篇文章也将用到我在头条写的另一篇原创文章的...

如何启用 HTTPS 并配置免费的 SSL 证书

在Linux服务器上启用HTTPS并配置免费的SSL证书(以Let'sEncrypt为例)可以通过以下步骤完成:---###**一、准备工作**1.**确保域名已解析**...

取消回复欢迎 发表评论: