Ubuntu - Befehl beim Start mit "sudo" ausführen


90

Ich möchte einen sudoBefehl ausführen, wenn Ubuntu gestartet wird (bevor sich jemand anmeldet):

sudo searchd

Wie würde ich das machen?

Antworten:


194

Sie können den Befehl in das /etc/rc.localSkript einfügen, das am Ende des Startvorgangs ausgeführt wird.

Schreiben Sie den Befehl vorher exit 0. Alles, was danach geschrieben exit 0wird, wird niemals ausgeführt.


38
Vorher sicher. Alles, was danach geschrieben exit 0wird, wird niemals ausgeführt.
Didier Trosset

Hallo, ich habe auch und rvmsudo Befehl in der gleichen Situation ausgeführt werden. Der Befehl fragt normalerweise nach dem Passwort. Wird es Probleme geben, wenn ich den Befehl direkt in /etc/rc.local platziere?
Ravi1991

@fmonegaglia Es kommt darauf an. Wenn Sie möchten, dass der Befehl gestartet wird und das Skript darauf wartet, dass er beendet wird, bevor Sie mit dem nächsten Befehl im Skript fortfahren, dann nein &. Wenn Sie möchten, dass der folgende Befehl gestartet wird, auch wenn der aktuelle nicht beendet ist, fügen Sie a hinzu &.
Didier Trosset

@NoOne Überprüfen Sie die Zugriffsrechte für diese Datei für den aktuellen Benutzer. Das Starten des Editorbefehls mit sudo kann den Trick tun.
Didier Trosset

1
Natürlich existiert es und ja, ich habe das ausführbare Bit gesetzt. Wenn ich versuche, den Dienst zu aktivieren, erhalte ich nur The unit files have no installation config (WantedBy, RequiredBy, Also, Alias settings in the [Install] section, and DefaultInstance for template units) […].Ratschläge dazu?
Oarfish

9

Bearbeiten Sie die tty-Konfiguration /etc/init/tty*.confmit einem Shellscript als Parameter:

(...)
exec /sbin/getty -n -l  theInputScript.sh -8 38400 tty1
(...)

Dies setzt voraus, dass wir tty1 bearbeiten und das Skript, das die Eingabe liest, theInputScript.sh ist.

Ein Wort der Warnung: Dieses Skript wird als root ausgeführt. Wenn Sie also Inhalte eingeben, haben Sie root-Berechtigungen. Fügen Sie außerdem einen Pfad zum Speicherort des Skripts hinzu.

Wichtig: Wenn das Skript beendet ist, muss es / sbin / login aufrufen, da Sie sich sonst nicht am Terminal anmelden können.


1
Diese Antwort war ziemlich nützlich für mich beim Bau unserer Produkt-Appliance, vielen Dank
José F. Romaniello

0

Schöne Antworten. Sie können Jobs (dh Befehle) auch mit " Crontab " festlegen, um mehr Flexibilität zu erhalten (dies bietet verschiedene Optionen zum Ausführen von Skripten, zum Protokollieren der Ausgaben usw.), obwohl mehr Zeit erforderlich ist, um richtig verstanden und festgelegt zu werden:

Mit '@reboot' können Sie beim Start einmal einen Befehl ausführen.

Einpacken : rennen$ sudo crontab -e -u root

Fügen Sie mit Ihrem Befehl wie folgt eine Zeile am Ende der Datei hinzu:

@reboot sudo searchd
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.