CentOS Java自动化运维落地方案
一 基础环境与标准化部署
二 持续交付与批量编排
三 运行监控与告警
四 日志与备份清理
五 一键落地清单与最小示例
[Unit]
Description=Demo Java App
After=network.target
[Service]
Type=simple
User=app
WorkingDirectory=/opt/apps/demo
ExecStart=/usr/bin/java -Xms256m -Xmx512m -jar /opt/apps/demo/app.jar
Restart=on-failure
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
常用命令:
#!/usr/bin/env bash
APP_DIR=/opt/apps/demo
JAR_NAME=app.jar
LOG_FILE=$APP_DIR/logs/health.log
PID_FILE=$APP_DIR/run/app.pid
check() {
pgrep -f "$JAR_NAME" >/dev/null 2>&1
}
start() {
if check; then
echo "$(date) $JAR_NAME is running." >> "$LOG_FILE"
else
cd "$APP_DIR" || exit 1
nohup /usr/bin/java -Xms256m -Xmx512m -jar "$JAR_NAME" >> logs/stdout.log 2>&1 &
echo $! > "$PID_FILE"
echo "$(date) $JAR_NAME started, PID=$!" >> "$LOG_FILE"
fi
}
stop() {
if [ -f "$PID_FILE" ]; then
pid=$(cat "$PID_FILE")
kill "$pid" && rm -f "$PID_FILE"
echo "$(date) $JAR_NAME stopped, PID=$pid" >> "$LOG_FILE"
fi
}
case "$1" in
start) start ;;
stop) stop ;;
restart) stop; start ;;
*) echo "Usage: $0 {start|stop|restart}" ;;
esac
定时自愈(crontab,每分钟检查一次):*/1 * * * * /opt/apps/demo/health.sh restart >> /opt/apps/demo/logs/health-cron.log 2>&1
告警扩展:在 restart 分支中调用企业微信 Webhook 发送文本告警,便于及时响应。