我有一个 Debian 破坏者。我的任务是在授权之前打开 Wi-Fi 并连接到接入点。为此,我想使用一项systemd
服务。我写了一个脚本:
/usr/sbin/ip link set wlo1 up
/usr/sbin/wpa_supplicant -B -D wext -i wlo1 -c /etc/wpa_supplicant.conf
/usr/sbin/dhclient wlo1
当我从服务运行它时systemd
,它说脚本运行成功。但授权为用户后,WLAN 状态为 DOWN。如此ip a show wlo1
说。因此,例如,ping 8.8.8.8
说connect: Network is unreachable
。
我的脚本肯定有效,因为如果我以具有超级用户权限的用户身份手动运行它,我将成功设置 WLAN 状态并连接到接入点。
我的系统服务:
[Unit]
BindsTo=sys-subsystem-net-devices-wlo1.device
After=sys-subsystem-net-devices-wlo1.device
[Service]
Type=oneshot
ExecStart=/path/to/my_script.sh
[Install]
WantedBy=multi-user.target
我会澄清。我的systemd
服务按预期在系统启动时启动。systemctl status
表示该服务完成了现场的所有命令ExecStart
并成功完成了工作。我不想知道如何以另一种方式解决我的问题。我想了解为什么这个方法不起作用。
答案1
默认值为,因此当您的脚本退出时,KillMode=control-group
systemd 会终止您的进程,如所规定的wpa_supplicant
一次性类型单元进入非活动状态。