通过shell脚本并加入到crond定时任务,实现对jar服务的开机启动
创建restart_giacp_apps.sh文件
#!/bin/bash
datetime=date +"%Y-%m-%d %H:%M:%S"
#echo "验证是否执行" >> /usr/local/shell/test.log
source /etc/profile #注意,这里有的系统可能需要重新导入(刷新)环境变量,不然部分jar服务无法正常运行
function restart_service() {
local service_name=$1
local service_path=$2
running_pid=$(ps -ef | grep "$service_name" | grep jar | awk '{print $2}')
if [ -z "$running_pid" ]; then
echo "未启动-$service_name"
cd "$service_path"
sleep 5
#nohup ${java_bin} -javaagent:**.jar -jar **.jar >/dev/null 2>&1 &
nohup ${java_bin} -javaagent:$(find ${service_path} -name "*.jar" -type f) -jar $(find ${service_path} -name "*.jar" -type f) >/dev/null 2>&1 &
else
echo "${service_name}已启动,现在杀死并重启"
echo "$running_pid" | xargs kill
cd "$service_path"
sleep 15
# nohup ${java_bin} -javaagent:**.jar -jar **.jar >/dev/null 2>&1 &
nohup ${java_bin} -javaagent:$(find ${service_path} -name "*.jar" -type f) -jar $(find ${service_path} -name "*.jar" -type f) >/dev/null 2>&1 &
fi
}
eureka_pwd=/usr/local/GIACP-APPS-1.6.6/eureka/
gateway_pwd=/usr/local/GIACP-APPS-1.6.6/gateway/
core_pwd=/usr/local/GIACP-APPS-1.6.6/core/
device_pwd=/usr/local/GIACP-APPS-1.6.6/device/
media_pwd=/usr/local/GIACP-APPS-1.6.6/media/
visitor_pwd=/usr/local/GIACP-APPS-1.6.6/visitor/
system_monitor_service_pwd=/usr/local/GIACP-APPS-1.6.6/monitor/
java_bin=/usr/local/jdk1.8.0_202/bin/java
#执行几次就调用restart_service函数多少次,并吧服务名和路径闯入函数中处理!
restart_service "giacp-eureka" "$eureka_pwd" #第一个参数是服务名 第二个参数是路径变量
restart_service "giacp-gateway" "$gateway_pwd"
restart_service "core-service" "$core_pwd"
restart_service "device-service" "$device_pwd"
restart_service "giacp-media" "$media_pwd"
restart_service "visitor-service" "$visitor_pwd"
restart_service "system-monitor-service" "$system_monitor_service_pwd"
加入到crontab中,实现任务调度,加入开机60秒后执行启动命令
#系统重启后60秒执行这个命令
@reboot sleep 60 && /usr/local/shell/restart_giacp_apps.sh