我已经用 netctl 在 eth0 和 wlan0 之间建立了一座桥。如果我告诉它在启动时配置 eth0 和 wlan0,然后让我在启动后手动启动网桥,它就可以正常工作。如果我告诉网桥自动启动,尽管出于某种原因,WLAN 适配器无法连接到接入点。因此,我需要“netctl startbridge”在整个系统完成启动后运行一分钟左右。知道我应该怎么做吗?
附言。这是一个无头系统,因为没有 xorg,所以在 xorg 启动时运行它是行不通的。
答案1
您可以使用 systemd 计时器在启动后一分钟执行脚本。
首先,创建服务文件(/etc/systemd/system/myscript.service):
[Unit]
Description=MyScript
[Service]
Type=simple
ExecStart=/usr/local/bin/myscript
然后创建计时器(/etc/systemd/system/myscript.timer):
[Unit]
Description=Runs myscript one minute after boot
[Timer]
# Time to wait after booting before activation
OnBootSec=1min
Unit=myscript.service
[Install]
WantedBy=multi-user.target
现在启用并运行它:
# systemctl enable myscript.timer
# systemctl start myscript.timer
答案2
Arch 使用 systemd 来管理启动进程(还有守护进程等)。
您可以编写一个脚本来简单地执行您想要的命令,或者休眠一分钟然后执行。然后按照上面的说明将其添加到启动过程中
如果添加睡眠:
#!/bin/sh
sleep 60 # one min
netctl start bridge
它应该工作得很好。 Systemd 在执行脚本时应该生成另一个进程,这样它就不会导致系统挂起。
答案3
如果您想要简单的非阻塞功能,请将以下内容添加到 /etc/rc.local 中:
( sleep 60 && /path/to/command_or_script [opts] ) &