#!/bin/bash # 创建 Gerrit systemd 服务,确保服务稳定运行和自动启动 echo "==========================================" echo "创建 Gerrit systemd 服务" echo "==========================================" echo "" # 检查是否有 root 权限 if [ "$EUID" -ne 0 ]; then echo "❌ 此脚本需要 root 权限,请使用 sudo 运行" echo "" echo "使用方法:" echo " sudo bash create_systemd_service.sh" exit 1 fi GERRIT_HOME="/home/renjianbo/gerrit_install/review_site" GERRIT_USER="renjianbo" JAVA_HOME="/usr/local/java/jdk-17.0.12+7" echo "配置信息:" echo " 服务目录: ${GERRIT_HOME}" echo " 运行用户: ${GERRIT_USER}" echo " Java 路径: ${JAVA_HOME}" echo "" # 创建 systemd 服务文件 echo "创建 systemd 服务文件..." sudo tee /etc/systemd/system/gerrit.service > /dev/null << EOSERVICE [Unit] Description=Gerrit Code Review After=network.target [Service] Type=forking User=${GERRIT_USER} Group=${GERRIT_USER} WorkingDirectory=${GERRIT_HOME} Environment="JAVA_HOME=${JAVA_HOME}" Environment="PATH=${JAVA_HOME}/bin:/usr/local/bin:/usr/bin:/bin" ExecStart=${GERRIT_HOME}/bin/gerrit.sh start ExecStop=${GERRIT_HOME}/bin/gerrit.sh stop Restart=on-failure RestartSec=10 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target EOSERVICE if [ $? -eq 0 ]; then echo "✅ systemd 服务文件创建成功" else echo "❌ 创建服务文件失败" exit 1 fi echo "" echo "重新加载 systemd 配置..." sudo systemctl daemon-reload if [ $? -eq 0 ]; then echo "✅ systemd 配置已重新加载" else echo "❌ 重新加载失败" exit 1 fi echo "" echo "设置开机自启动..." sudo systemctl enable gerrit if [ $? -eq 0 ]; then echo "✅ 开机自启动已设置" else echo "❌ 设置开机自启动失败" exit 1 fi echo "" echo "==========================================" echo "✅ systemd 服务配置完成!" echo "==========================================" echo "" echo "服务管理命令:" echo " 启动服务: sudo systemctl start gerrit" echo " 停止服务: sudo systemctl stop gerrit" echo " 重启服务: sudo systemctl restart gerrit" echo " 查看状态: sudo systemctl status gerrit" echo " 查看日志: sudo journalctl -u gerrit -f" echo "" echo "服务特性:" echo " ✅ 开机自动启动" echo " ✅ 故障自动重启(失败后10秒重启)" echo " ✅ 日志记录到 systemd journal" echo ""