Ich hatte ein Skript, das mein WLAN automatisch aktiviert, ohne den Netzwerkmanager zu verwenden, aber ich weiß nicht, wie ich das Skript als Root ausführen soll, während das System bootet. Wie kann ich das Skript beim Booten automatisch ausführen lassen?
59
autostart
Manifesten oder in*.service
Dateien an mehreren Speicherorten sowie ininit.d
oder konfiguriertcrontab
. Siehe dies: unix.stackexchange.com/a/525845/43233Antworten:
Platzieren Sie das Skript, das Sie ausführen möchten, im Verzeichnis /etc/init.d und machen Sie das Skript ausführbar.
Sobald dies erledigt ist, erstellen Sie einen symbolischen Link in dem Runlevel-Verzeichnis, das Sie verwenden möchten. Wenn Sie beispielsweise ein Programm in dem grafischen Runlevel 2, dem Standard-Runlevel für Ubuntu, ausführen möchten, platzieren Sie es in dem
/etc/rc2.d
Verzeichnis. Sie können es einfach nicht in das Verzeichnis stellen. Sie müssen angeben, wann es ausgeführt wird, indem Sie den Start mit einem "S" kennzeichnen und die Ausführungsreihenfolge ist wichtig. Platzieren Sie es nach allem anderen, was sich im Verzeichnis befindet, indem Sie ihm eine höhere Nummer geben.Wenn das letzte auszuführende Skript
rc.local
benanntS99rc.local
ist, müssen Sie es als hinzufügenS99myscript
.Jedes abwärtskompatible
/etc/rc*.d
Verzeichnis verfügt über symbolische Links zu dem/etc/init.d/
Verzeichnis.quelle
/etc/rc2.d
, anstattrc3.d
wie im Beispiel angegeben. Es scheintrc2.d
nicht nur das grafische Runlevel zu sein.cd /etc/rc`cat /etc/init/rc-sysinit.conf | grep "env DEFAULT_RUNLEVEL" | grep -oP "\d"`.d
Hiermit gelangen Sie in das/etc/rc?.d
Verzeichnis, das Ihrem Standard-Runlevel entspricht.rc.local
Namen trägtS99rc.local
, müssen Sie Ihr Skript alsS99myscript
. Hinzufügen ." Meinten Sie: "Wenn das letzte auszuführende Skript einenmyscript
NamenS99myscript
hat, müssen Sie Ihr Skript als hinzufügenS99myscript
." ???Fügen Sie den Befehl ein
/etc/rc.local
. Es wird ausgeführt, wenn sich der Runlevel des Benutzers ändert.Hinweis: Sie müssen den Befehl vor die letzte Zeile in /etc/rc.local setzen, die Folgendes enthält: "exit 0".
quelle
/etc/rc.local
, dieexit 0
/etc/rc.local
In Ubuntu 15.10 heißt es im Kommentar: "Dieses Skript wird am Ende jedes Mehrbenutzer-Runlevels ausgeführt." Das Skript könnte also während des Startvorgangs mehrmals ausgeführt werden, oder?Verwenden Sie eine
crontab
Option, damit Ihr Skript nach dem Neustart ausgeführt wird.Sie können dies tun, indem Sie
@reboot
Code in cron hinzufügenÖffnen Sie crontab vom root-Benutzer:
Fügen Sie den nächsten Datensatz unten hinzu:
Das wird machen was du willst.
quelle
crontab -e
, für den keine Superuser-Berechtigungen erforderlich sind? Ich frage mich, ob es Skripte ausführen kann, die als root ausgeführt werden müssen.sudo crontab -e
, damit das Skript beim Start als root ausgeführt wird./var/run/crond.reboot
, wenn nicht, wird die Aufgabe nicht ausgeführtDas hat bei mir unter Ubuntu 17.04 geklappt:
Erstellen Sie eine Tour-Skriptdatei wie
disable_cdrom
in Ihrem gewünschten Verzeichnis. In meinem Fallhome/yterle/disable_cdrom
. In meinem Fall:mach es ausführbar
chmod 775 disable_cdrom
/etc/systemd/system
und erstelle dort eineservice
datei. Zum Beispielsudo gedit /etc/systemd/system/disable_cdrom.service
Mein
disable_cdrom.service
sieht so aus:Wo
ExecStart
soll das Skript ausgeführt werden?/bin/sh
Führen Sie dann aus
systemctl enable disable_cdrom.service
, um den systemd-Dienst zu aktivierenquelle
systemctl enable disable_cdrom.service
Fügen Sie Ihre Skriptdatei
/etc/init.d/
mit der Berechtigung Ausführbare Datei hinzu, und legen Sie dann eine andere Ausführungsebene festEs wird Ihr Skript beim Booten starten.
quelle
update-rc.d script-name enable
?Erstellen Sie eine Textdatei wie diese in
/etc/cron.d/
:(Sie sollten
yourScriptPath
den Pfad zu dem Skript angeben, das Sie ausführen möchten.)quelle
Vorsicht beim Hinzufügen des Skripts zu
rc.local
- ich war deswegen im Begrüßungsbildschirm stecken. Durch Drücken von Alt+ F1wurde angezeigt, was sich hinter dem Begrüßungsbildschirm abspielte (das Skriptrc.local
wurde ausgeführt).Ich konnte nicht raus.
nichts funktioniert.
Ich musste von einem USB-Ubuntu-Image booten, suchen
rc.local
, mir die Erlaubnis geben, es abzulegen und zu löschen. Ich denke, du solltest nichts tun, wenn du nicht weißt, was du tust.quelle