Ich habe mit netctl eine Brücke zwischen eth0 und wlan0 eingerichtet. Das funktioniert einwandfrei, wenn ich eth0 und wlan0 beim Start konfiguriere und die Brücke dann nach dem Booten manuell starte. Wenn ich der Brücke jedoch sage, dass sie automatisch starten soll, stellt der WLAN-Adapter aus irgendeinem Grund keine Verbindung zu einem Access Point her. Ich muss daher „netctl start bridge“ etwa eine Minute nach dem Booten des gesamten Systems ausführen. Irgendeine Idee, wie ich das machen soll?
PS: Dies ist ein Headless-System, also ohne Xorg, daher funktioniert die Ausführung beim Start von Xorg nicht.
Antwort1
Sie können Systemd-Timer verwenden, um ein Skript eine Minute nach dem Booten auszuführen.
Erstellen Sie zunächst die Servicedatei (/etc/systemd/system/myscript.service):
[Unit]
Description=MyScript
[Service]
Type=simple
ExecStart=/usr/local/bin/myscript
Erstellen Sie dann einen Timer (/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
Aktivieren und führen Sie es jetzt aus:
# systemctl enable myscript.timer
# systemctl start myscript.timer
Antwort2
Arch verwendet systemd zur Verwaltung von Startvorgängen (auch Daemons und dergleichen).
Sie können ein Skript schreiben, das einfach den gewünschten Befehl ausführt, oder eine Minute lang innehalten und dann ausführen. Fügen Sie es dann mit den Anweisungen auf der Seite zum Startvorgang hinzu.
wenn Sie einen Schlaf hinzufügen:
#!/bin/sh
sleep 60 # one min
netctl start bridge
Es sollte einwandfrei funktionieren. Systemd sollte bei der Ausführung Ihres Skripts einen weiteren Prozess starten, sodass Ihr System nicht hängen bleibt.
Antwort3
Wenn Sie etwas Einfaches möchten, das nicht blockiert, fügen Sie Folgendes zu /etc/rc.local hinzu:
( sleep 60 && /path/to/command_or_script [opts] ) &