应先用systemctl list-units | grep -e "(networkmanager|networking|systemd-networkd)"确认实际启用的网络管理服务,再执行对应重启命令;错用systemctl restart network在新系统上必报“unit not found”,因该服务已不存在。

直接看系统用的是哪个网络管理器,再执行对应命令——错用 systemctl restart network 在多数新系统上会报 “Unit not found”,不是命令写错了,是服务根本不存在。
怎么确认当前系统用的是 NetworkManager 还是 networking
运行这条命令就能快速判断:
systemctl list-units | grep -E "(NetworkManager|networking|systemd-networkd)"
常见结果含义:
- 看到
NetworkManager.service处于 active 状态 → 用systemctl restart NetworkManager - 看到
networking.service且没启 NetworkManager → 用systemctl restart networking - 看到
systemd-networkd.service→ 用systemctl restart systemd-networkd - Ubuntu 18.04+ 有
/etc/netplan/目录 → 别碰上面任何 service,直接sudo netplan apply
注意:systemctl status network 基本上只会返回 “not found”,这是正常现象,不是你漏装了什么包。
NetworkManager 重启后连不上?光 restart 不够
systemctl restart NetworkManager 只重载服务进程,不强制重连已定义的连接。改过 Wi-Fi 密码、静态 IP 或刚新增了 .nmconnection 文件,必须补两步:
- 先重载连接定义:
nmcli connection reload - 再显式上下线目标连接:
nmcli connection down id "MyConnection" && nmcli connection up id "MyConnection"
如果用 nmcli device wifi list 看不到 SSID,或 ip a 没地址,大概率卡在这一步。别反复 restart 服务,它不解决配置未生效的问题。
只重启单个网卡,不想动整个网络栈
远程维护时最安全的做法:不碰服务,只操作接口本身。
- 查接口名:
ip -br a(一眼看清哪些是 UP 状态) - 软重启 eth0:
sudo ip link set eth0 down && sudo ip link set eth0 up - 等效但更老派的写法:
sudo ifdown eth0 && sudo ifup eth0(前提是该接口在/etc/network/interfaces里有定义)
这个操作不会影响其他网卡,也不会触发 DNS 重载或 DHCP 租约更新——如果你要的就是“让网卡重新握手”,那它比 restart 服务更精准;但如果你改了 IP 或路由,它不会加载新配置。
真正容易被忽略的点是:NetworkManager 和 /etc/network/interfaces 不能混用。哪怕只在 interfaces 里写了 auto lo,NM 也可能把 lo 以外的接口自动接管并关掉——这种冲突不会报错,只会让你发现网卡莫名 down 掉。











