网站首页 > 技术教程 正文
# 最终结果
在 /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)
猜你喜欢
- 2024-10-12 高端Linux 脚本很有用,赶紧学起来!
- 2024-10-12 linux日常脚本(linux有意思的脚本)
- 2024-10-12 彻底搞懂nginx基本使用配置(nginx常用配置参数)
- 2024-10-12 nginx的脚本特性-nginScript笔记(nginx执行lua脚本)
- 2024-10-12 详解shell脚本case条件语句,开发各种服务启动脚本跳板机
- 2024-09-25 详解利用系统函数模拟实现nginx 系统脚本启动的特殊颜色专业效果
- 2024-09-25 0364-如何使用Nginx实现HiveServer2负载均衡
- 2024-09-25 centos 7.9 shell脚本安装nginx-1.20.2
- 2024-09-25 Nginx日志安全分析脚本(nginx日志大量502)
- 2024-09-25 redis&nginx运行参数采集脚本
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)