#!/bin/bash# 设置monitor_java_services脚本的路径
monitor_script_path="/usr/local/tech/autoinstall/scripts/monitor_java_services.sh"# 确保该文件存在并具有可执行权限if[!-f "$monitor_script_path"]; then
echo"monitor_java_services.sh not found at $monitor_script_path"exit 1
fi
chmod +x "$monitor_script_path"# 创建systemd服务文件cat <<EOF | sudo tee/etc/systemd/system/monitor_java_services.service
[Unit]
Description=Monitor Java Services
[Service]
ExecStart=$monitor_script_path[Install]
WantedBy=multi-user.target
EOF
# 重新加载systemd配置
sudo systemctl daemon-reload
# 启用并启动服务
sudo systemctl enable monitor_java_services.service
sudo systemctl start monitor_java_services.service
# 输出服务状态
sudo systemctl status monitor_java_services.service
二、检测服务状态自启动
#!/bin/bash
SERVER_DIR="/home/tech/server"
services=("route/route.jar""system/system.jar""home/home.jar""ts/traffic-condition-server.jar""assets-basic-web/assets-basic-web.jar""real-time-monitor/real-time-monitor.jar""video/video.jar""situation/situation.jar""duty/duty.jar""assets-detection-server-web/assets-detection-server-web.jar""tsjs/traffic_condition.jar""vnp/vnp.jar""dh-vnp-gb28181/dh-vnp-gb28181.jar""ydfb/ydfb-server-1.0-SNAPSHOT.jar")
JAVA_HOME="/usr/local/java/jdk1.8"
JAVA_CMD="$JAVA_HOME/bin/java"
JAVA_OPTS="-Xms256m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:+UseParallelGC -XX:InitialCodeCacheSize=32m -XX:ReservedCodeCacheSize=128m -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -Xloggc:/dhxdata/logerror/java_gc.log -XX:+UseCompressedOops "
start_jar(){
local jar_path=$1$JAVA_CMD$JAVA_OPTS-jar $jar_path &
if[[ $? -ne 0 ]]; then
echo"Failed to start $jar_path"
fi
}
monitor_jar(){
local jar_path=$1
local jar_pid=$(pgrep -f "$jar_path")if[[-z "$jar_pid"]]; then
echo"Restarting $jar_path"
start_jar $jar_pathelseecho"$jar_path is running with PID $jar_pid"
fi
}while true;dofor service in "${services[@]}";do
full_path="$SERVER_DIR/$service"{
monitor_jar $full_path}||{echo"Error occurred while monitoring $full_path"}
done
sleep 240
done
Tip其他方便重启脚本
#!/bin/bash
SERVER_DIR="/home/tech/jtgkpt/server"
subdirs=("route""system""home""ts""assets-basic-web""auto-follow-visual-web""real-time-monitor""video""situation""duty""websocket""tsjs""vnp""dh-vnp-gb28181")
jar_names=("route.jar""system.jar""home.jar""traffic-condition-server.jar""assets-basic-web.jar""auto-follow-visual-web.jar""real-time-monitor.jar""video.jar""situation.jar""duty.jar""websocket.jar""traffic_condition.jar""vnp.jar""dh-vnp-gb28181.jar")
JAVA_HOME="/home/software/jdk1.8"
JAVA_CMD="$JAVA_HOME/bin/java"
JAVA_OPTS="-Xms512m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=256m"
kill_jar_process(){
local jar_path=$1
local jar_pid=$(pgrep -f "$jar_path")if[[-n "$jar_pid"]]; then
echo"正在杀死PID为 $jar_pid 的服务"ifkill-9 "$jar_pid"; then
echo"PID为 $jar_pid 的服务已成功被杀死."elseecho"试图杀死PID为 $jar_pid 的服务时出现错误"
fi
fi
}
start_jar_process(){
local jar_path=$1
local subdir=$2
local jar_name=$3
local cmd="$JAVA_CMD$JAVA_OPTS -jar $jar_path"
cd "$SERVER_DIR/$subdir"echo"正在启动 $jar_name..."if nohup $cmd &> "$SERVER_DIR/$subdir/start.log" & then
echo"$jar_name 服务已成功启动."elseecho"试图启动 $jar_name 服务时出现错误."
fi
}for((i = 0; i < ${#subdirs[@]}; i++)); do
subdir="${subdirs[i]}"
jar_name="${jar_names[i]}"
jar_path="$SERVER_DIR/$subdir/$jar_name"if[[!-f "$jar_path"]]; then
echo"警告: 文件 $jar_path 不存在."continue
fi
kill_jar_process "$jar_path"sleep 2 # 等待进程被完全杀死
start_jar_process "$jar_path""$subdir""$jar_name"
done
echo"所有服务应已重启. 请检查上述消息以查看是否有任何错误."