You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

64位Raspbian系统RPi4中Systemctl服务开机未执行问题求助

问题原因及修复方案

你当前的systemd服务配置存在多处缺失,是开机不触发的核心原因,按以下步骤调整即可:

1. 补齐缺失的[Install]段

这是最核心的遗漏:没有指定服务挂载的启动目标,即使执行systemctl enable也只会创建空的软链接,不会被开机流程触发。需要在配置末尾添加:

[Install]
WantedBy=multi-user.target

2. 补充Unit段的依赖与启动顺序

当前没有配置执行时机,很可能服务执行时eth0还未被系统初始化,后续网络管理服务(比如dhcpcd、NetworkManager)会再次把eth0拉回up状态,修改[Unit]段如下:

[Unit]
Description=Set eth0 interface down
After=network.target sys-subsystem-net-devices-eth0.device
Requires=sys-subsystem-net-devices-eth0.device

After指定服务要在网卡初始化完成、网络基础target启动后再执行;Requires确保eth0设备存在时才会启动该服务,避免设备不存在时报错。

3. 优化Service段配置

  • 你当前写的/usr/bin/base属于笔误,应为/usr/bin/bash,如果是直接执行命令可以不用调用shell,直接写执行命令即可
  • Type=simple适用于长期驻留的进程,你这种执行完就退出的一次性任务,应该用Type=oneshot
  • 建议用系统默认自带的ip命令替代需要额外安装net-tools的ifconfig,兼容性更好
    修改后[Service]段如下:
[Service]
Type=oneshot
ExecStart=/usr/sbin/ip link set eth0 down

4. 重新生效配置

修改完配置文件后执行以下命令生效:

sudo systemctl daemon-reload
sudo systemctl reenable 你的服务文件名.service

排查方法

如果调整后还是不生效,执行以下命令查看服务启动日志定位问题:

# 查看服务当前状态
systemctl status 你的服务文件名.service
# 查看服务历史启动日志
journalctl -u 你的服务文件名.service

可选更简单方案

Raspbian默认使用dhcpcd管理网络接口,不需要单独写systemd服务,直接编辑/etc/dhcpcd.conf,在末尾添加一行:

denyinterfaces eth0

重启后dhcpcd就不会管理eth0,默认保持down状态,操作更简单。

内容的提问来源于stack exchange,提问作者Sandbo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:36:03