当前位置: 首页 > article >正文

ubuntu检测断网后自动重启网卡

以下是实现Ubuntu在检测到网络中断时自动重启NetworkManager服务的步骤:

### 1. 创建监控脚本
保存以下内容为`/usr/local/bin/network-restart.sh`:

```bash
#!/bin/bash

TARGET="8.8.8.8"  # 检测目标,可替换为可靠IP或域名
FAIL_THRESHOLD=3   # 连续失败次数阈值
INTERVAL=5         # 正常检测间隔(秒)
FAIL_INTERVAL=60   # 重启后等待时间(秒)

fail_count=0

while true; do
    if ping -c 2 -W 1 "$TARGET" &>/dev/null; then
        fail_count=0
        sleep $INTERVAL
    else
        ((fail_count++))
        if [ $fail_count -ge $FAIL_THRESHOLD ]; then
            echo "$(date): 网络中断,重启NetworkManager..."
            systemctl restart NetworkManager.service
            fail_count=0
            sleep $FAIL_INTERVAL
        else
            sleep $INTERVAL
        fi
    fi
done
```

赋予执行权限:

```bash
sudo chmod +x /usr/local/bin/network-restart.sh
```

### 2. 创建Systemd服务
创建文件`/etc/systemd/system/network-restart-monitor.service`,内容如下:

```ini
[Unit]
Description=Network Restart Monitor
After=network.target

[Service]
ExecStart=/usr/local/bin/network-restart.sh
Restart=always
User=root

[Install]
WantedBy=multi-user.target
```

### 3. 启用并启动服务

```bash
sudo systemctl daemon-reload
sudo systemctl enable network-restart-monitor.service
sudo systemctl start network-restart-monitor.service
```

### 4. 验证服务状态

```bash
systemctl status network-restart-monitor.service
```

### 配置说明:
- **目标调整**:修改脚本中的`TARGET`为更可靠的服务器(如你的路由器IP)。
- **阈值调整**:通过`FAIL_THRESHOLD`设置连续失败次数,避免误判。
- **日志查看**:使用`journalctl -u network-restart-monitor.service`查看服务日志。

### 注意事项:
- 确保脚本中的`systemctl`路径正确(通常为`/usr/bin/systemctl`)。
- 若企业网络有防火墙限制,建议使用内网可达地址作为检测目标。
- 频繁网络抖动可能导致服务重启次数过多,建议适当增大`FAIL_INTERVAL`。

此方案通过系统级服务实现持续监控,在保持低资源占用的同时确保网络可靠性。


http://www.kler.cn/a/542144.html

相关文章:

  • Matlab机械手碰撞检测应用
  • 数字滤波器的分类
  • 第三个Qt开发实例:利用之前已经开发好的LED驱动在Qt生成的界面中控制LED2的亮和灭
  • 防御保护-----前言
  • 前端页面添加水印
  • 【信息系统项目管理师-案例真题】2017下半年案例分析答案和详解
  • navicat导出表结构到Excel 带字段备注
  • 第9章 城市基础设施更新工程 9.3 管网改造施工
  • 清华大学新闻与传播学院沈阳团队出品的《DeepSeek:从入门到精通》104页PDF
  • C++模拟实现AVL树
  • Linux高并发服务器开发 第十七天(管道缓存区查询大小 管道的优劣 命名管道mkfifo 建立释放映射区mmap/munmap 匿名映射 进程间的通信)
  • 如何把DeepSeek R1模型微调蒸馏成为医疗影像分析模型介绍
  • Python 识别图片和扫描PDF中的文字
  • Python的顺序结构和循环结构
  • MySQL的in条件中最多能放多少个值?
  • 多核cpu与时间片多线程的问题
  • 日志2025.2.11
  • 访问Elasticsearch服务 curl ip 端口可以 浏览器不可以
  • RagFlow + Docker Desktop + Ollama + DeepSeek-R1本地部署自己的本地AI大模型工具
  • 个人第一个git+cmake构建的c++项目
  • 技术实战|ELF 2学习板本地部署DeepSeek-R1大模型的完整指南(一)
  • 模块的加载机制
  • Unity使用iTextSharp导出PDF-01准备dll
  • 网络编程(TCP/UDP)
  • C++ `Lambda` 函数完整指南
  • 点云配准网络