我的实验室服务器经常自动断网,推测可能是usb wifi模块驱动不稳定。
由于我经常要在宿舍远程操纵服务器跑模型和监看实验,因此断网会对我造成很大影响。
解决办法:
创建一个脚本每分钟检查一次网络。如果发现断了,强制重启网络服务。这是不需要物理接触电脑的最保险方案。
创建脚本:
sudo nano /usr/local/bin/keep-wifi-alive.sh
写入以下内容:
#!/bin/bash
# 你的无线网卡接口名
INTERFACE="网卡接口名"
# 你的连接名称(用 nmcli con show 查看,之前输出是 "wifi名")
CONNECTION_NAME="wifi名"
# 检测目标(建议用网关IP,或者 8.8.8.8)
TARGET="网关IP"
# 获取当前时间记录日志
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
# Ping 检测 (-c 3: ping 3次, -W 5: 超时5秒)
if ! ping -I $INTERFACE -c 3 -W 5 $TARGET > /dev/null 2>&1; then
echo "$TIMESTAMP - Network down! Restarting connection..." >> /var/log/wifi-fix.log
# 强制重启 NetworkManager 连接
nmcli con down "$CONNECTION_NAME"
sleep 5
nmcli con up "$CONNECTION_NAME"
# 如果还是不行,尝试重置 USB 设备(可选,需小心)
# 这里的命令取决于具体情况,通常重启连接就够了
else
# echo "$TIMESTAMP - Network is up." >> /var/log/wifi-fix.log # 调试用,平时注释掉
:
fi
赋予执行权限:
sudo chmod +x /usr/local/bin/keep-wifi-alive.sh
加入定时任务:
sudo crontab -e
在文件末尾添加一行(每两分钟检查一次):
*/2 * * * * /usr/local/bin/keep-wifi-alive.sh