From 930c3e8588624731382c0ab87210aba6f189e619 Mon Sep 17 00:00:00 2001 From: eddy <1036636139@qq.com> Date: Thu, 18 Jun 2026 02:46:56 +0800 Subject: [PATCH] fix 3 --- vps_init.sh | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/vps_init.sh b/vps_init.sh index d2261ee..d7a3b2f 100644 --- a/vps_init.sh +++ b/vps_init.sh @@ -369,14 +369,13 @@ if [[ "$CHANGE_SSH_PORT" =~ ^[Yy]$ ]]; then log "${YELLOW}尝试使用备选方法添加端口设置${NC}" fi - # 重启SSH服务 - systemctl restart sshd - if [ $? -eq 0 ]; then + # 重启SSH服务(Debian的服务名为ssh,部分系统为sshd,依次尝试) + if systemctl restart sshd 2>/dev/null || systemctl restart ssh 2>/dev/null; then log "${GREEN}SSH服务重启成功${NC}" else log "${RED}SSH服务重启失败${NC}" # 尝试使用service命令 - service sshd restart || service ssh restart + service sshd restart || service ssh restart || log "${RED}无法重启SSH服务,请手动检查${NC}" fi # 检查SSH服务状态 @@ -501,12 +500,12 @@ if [ "$OS_TYPE" = "debian" ]; then # 检测活跃的网络连接和正在监听的端口 log "${YELLOW}检测当前活跃的服务端口...${NC}" - # 使用netstat查找监听的TCP端口 - LISTENING_PORTS=$(netstat -tlnp 2>/dev/null | grep "LISTEN" | awk '{print $4}' | awk -F: '{print $NF}' | sort -n | uniq) + # 使用netstat查找监听的TCP端口(排除仅绑定本地回环127.x/::1的端口,例如SSH的X11转发6010) + LISTENING_PORTS=$(netstat -tlnp 2>/dev/null | awk '/LISTEN/ {print $4}' | grep -vE '^(127\.|::1:)' | awk -F: '{print $NF}' | sort -n | uniq) - # 使用lsof作为备选方法 + # 使用lsof作为备选方法(同样排除本地回环地址) if [ -z "$LISTENING_PORTS" ] && command -v lsof &> /dev/null; then - LISTENING_PORTS=$(lsof -i -P -n 2>/dev/null | grep LISTEN | awk '{print $9}' | awk -F: '{print $NF}' | sort -n | uniq) + LISTENING_PORTS=$(lsof -iTCP -sTCP:LISTEN -P -n 2>/dev/null | awk 'NR>1 {print $9}' | grep -vE '^(127\.|\[::1\])' | awk -F: '{print $NF}' | sort -n | uniq) fi # 如果仍然为空,提示手动检查 @@ -579,11 +578,13 @@ fi log "${BLUE}[8/10] 内存优化开始...${NC}" # 获取当前所有交换空间信息 -CURRENT_SWAP_TOTAL=$(free -m | grep "Swap:" | awk '{print $2}') +CURRENT_SWAP_TOTAL=$(free -m | awk '/Swap:/ {print $2}') +CURRENT_SWAP_TOTAL=${CURRENT_SWAP_TOTAL:-0} log "${YELLOW}当前系统交换空间总大小: ${CURRENT_SWAP_TOTAL}MB${NC}" -# 检查是否存在交换空间且大小与设定值相同 -if [ "$CURRENT_SWAP_TOTAL" -eq "$SWAP_SIZE" ]; then +# 检查是否存在交换空间且大小与设定值接近(允许误差,mkswap头部会占用少量空间,free显示通常比设定值少几MB) +SWAP_DIFF=$(( CURRENT_SWAP_TOTAL - SWAP_SIZE )) +if [ "${SWAP_DIFF#-}" -le 5 ]; then log "${GREEN}当前交换空间大小(${CURRENT_SWAP_TOTAL}MB)与设定值一致,无需修改${NC}" # 显示交换空间信息 free -h | tee -a $LOG_FILE