编程技术分享平台

网站首页 > 技术教程 正文

CentOS 开机启动脚本(centos开机启动脚本)

xnh888 2024-09-25 23:30:24 技术教程 17 ℃ 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)

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表