1 概述
-
服務器一般不可能百分之百不會掛,於是一般采用主備或者分布式來達到高可用。
-
掛掉的機器有很多處理策略,常用的就是重新啟動,但是為了保證重啟之后服務器能夠恢復可用狀態,需要配置開機啟動腳本。
2 編寫啟動腳本
- 服務腳本:假設服務名字為test
#!/bin/bash
### BEGIN INIT INFO
# Provides: littleevil
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: test service
# Description: test service daemon
### END INIT INFO
# 文件服務器 運營平台 商戶平台
files=(file opt merchant)
# 目錄
deploy=/home/littleevil/deploy/
start() {
echo "starting test service..."
for var in ${files[@]};
do
# 進入目錄並運行服務器啟動腳本
cd $deploy$var
sh start.sh
done
}
stop() {
echo "stopping test service..."
for var in ${files[@]};
do
# 進入目錄並運行服務器停止腳本
cd $deploy$var
sh stop.sh
done
}
restart() {
stop
start
}
# 這里沒有重寫status
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
esac
- 服務器啟動腳本:這里演示文件服務器的啟動腳本
#!/bin/sh
echo "you will start server"
echo "please waiting ...."
ps -ef|grep file.jar|grep -v grep|awk {'print $2'}|while read line
do
kill -9 $line
done
rm -rf log.out
# JVM調優參數未寫 需要根據實際情況進行調整
nohup nice java -server -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintHeapAtGC -Xloggc:./gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./oom.dump -jar file.jar >log.out&
- 服務器停止腳本
#!/bin/sh
echo "you will stop server"
echo "please waiting ...."
ps -ef|grep file.jar|grep -v grep|awk {'print $2'}|while read line
do
sudo -S kill -9 $line
done
rm -rf log.out
3 設置腳本開機自啟動
- 復制文件夾中的test服務腳本至linux系統的
/etc/init.d目錄下 - 進入
/etc/init.d目錄執行sudo update-rc.d test defaults 95 - 執行
sudo sysv-rc-conf查看服務是否添加 - 執行
sudo service test start/stop/restart/status或者sudo systemctl start/stop/restart/status test.service測試服務是否添加成功 (需要重啟服務器) - 執行
sudo sysv-rc-conf --level 2345 delightd on - 最后通過
sudo reboot測試服務開啟是否可以自啟動
