Arch Linux führt das Skript eine Minute nach dem Booten aus

Arch Linux führt das Skript eine Minute nach dem Booten aus

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.

Wiki

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] ) &

verwandte Informationen