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