Arch Linux 启动一分钟后运行脚本

Arch Linux 启动一分钟后运行脚本

我已经用 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] ) &

相关内容