Files
pika/scripts/update-restartsec.sh
2025-12-30 20:52:19 +08:00

116 lines
3.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Pika Agent RestartSec 升级脚本
# 用途: 将 systemd 服务的 RestartSec 从 120 改为 5
# 使用: curl -fsSL https://raw.githubusercontent.com/dushixiang/pika/main/scripts/update-restartsec.sh | sudo bash
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
SERVICE_NAME="pika-agent"
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
echo "================================================"
echo "Pika Agent RestartSec 升级脚本"
echo "================================================"
echo ""
# 检查是否以 root 权限运行
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}错误: 请使用 root 权限运行此脚本${NC}"
echo "使用方法: curl -fsSL https://raw.githubusercontent.com/dushixiang/pika/main/scripts/update-restartsec.sh | sudo bash"
exit 1
fi
# 检查服务文件是否存在
if [ ! -f "$SERVICE_FILE" ]; then
echo -e "${RED}错误: 服务文件不存在: $SERVICE_FILE${NC}"
echo "请先安装 pika-agent 服务"
exit 1
fi
echo -e "${YELLOW}[1/3] 检查当前配置...${NC}"
# 检查当前的 RestartSec 值
CURRENT_RESTART_SEC=$(grep -oP '^\s*RestartSec=\K\d+' "$SERVICE_FILE" || echo "")
if [ -z "$CURRENT_RESTART_SEC" ]; then
echo -e "${YELLOW}警告: 未找到 RestartSec 配置${NC}"
else
echo "当前 RestartSec = $CURRENT_RESTART_SEC"
fi
# 如果已经是 5则无需修改
if [ "$CURRENT_RESTART_SEC" = "5" ]; then
echo -e "${GREEN}✓ RestartSec 已经是 5 秒,无需修改${NC}"
exit 0
fi
echo ""
echo -e "${YELLOW}[2/3] 修改 RestartSec 配置...${NC}"
# 修改 RestartSec 为 5
if grep -q "^\s*RestartSec=" "$SERVICE_FILE"; then
# 如果存在 RestartSec则替换
sed -i 's/^\(\s*\)RestartSec=.*/\1RestartSec=5/' "$SERVICE_FILE"
echo "已将 RestartSec 修改为 5 秒"
else
# 如果不存在 RestartSec则在 Restart=always 后添加
sed -i '/^\s*Restart=always/a RestartSec=5' "$SERVICE_FILE"
echo "已添加 RestartSec=5 配置"
fi
echo ""
echo -e "${YELLOW}[3/4] 重新加载 systemd 配置...${NC}"
# 重新加载 systemd 配置
systemctl daemon-reload
echo "systemd 配置已重新加载"
# 验证修改后的值
NEW_RESTART_SEC=$(grep -oP '^\s*RestartSec=\K\d+' "$SERVICE_FILE")
if [ "$NEW_RESTART_SEC" != "5" ]; then
echo ""
echo "================================================"
echo -e "${RED}✗ 配置修改失败${NC}"
echo "================================================"
echo ""
echo "当前 RestartSec = $NEW_RESTART_SEC"
echo "请检查服务文件: cat $SERVICE_FILE"
exit 1
fi
echo ""
echo -e "${YELLOW}[4/4] 重启服务以应用新配置...${NC}"
# 重启服务
if systemctl restart $SERVICE_NAME; then
echo "服务已重启"
# 等待一下,确保服务启动
sleep 2
# 检查服务状态
if systemctl is-active --quiet $SERVICE_NAME; then
echo -e "${GREEN}✓ 服务运行正常${NC}"
else
echo -e "${YELLOW}警告: 服务可能未正常启动,请检查状态${NC}"
echo "执行: systemctl status $SERVICE_NAME"
fi
else
echo -e "${RED}✗ 服务重启失败${NC}"
echo "请手动检查: systemctl status $SERVICE_NAME"
exit 1
fi
echo ""
echo "================================================"
echo -e "${GREEN}✓ 升级完成!${NC}"
echo "================================================"
echo ""
echo "修改后 RestartSec = $NEW_RESTART_SEC"
echo "服务已自动重启并应用新配置"
echo ""