Wie führe ich ein Skript als sudo beim Booten unter Ubuntu 18.04 Server aus? [Duplikat]


11

Wie führe ich beim Start ein Skript als sudo aus?

Ich muss laufen ethtool --offload <net> rx off, um die nervige jme udp Prüfsummenfehlermeldung zu deaktivieren.


Warum glaubst du, würdest du beim Booten Sudo brauchen?
Rinzwind

@Rinzwind wahrscheinlich, weil ethtool root braucht, um ausgeführt zu werden. SystemD-Einheit als Wurzel ist der beste Ansatz
Thomas Ward

1
"as sudo" - du meinst "as root(der allmächtige Benutzer mit $UID=0)". sudoist ein Tool, mit dem ein normaler Benutzer einen Befehl als ausführen kann root. "at boot" - alles, was mit dem Systemstart zu root
tun hat,

@waltinator: außer Dingen, die Privilegien verlieren; Sie können beispielsweise Ihr System eine X Server + Benutzersitzung für einen bestimmten Benutzer starten lassen. Es ethtoolwäre jedoch eine wirklich schlechte Idee , über sudo von etwas zu laufen , das Berechtigungen verloren hat (wie der Wortlaut dieser Frage nahelegt), /etc/rc.localoder es auf eine "modernere" Weise zu verwenden, um die Dinge während des Startvorgangs als Root auszuführen.
Peter Cordes

Antworten:


15

Sie können einen systemd-Dienst erstellen.

Erstellen Sie eine Datei /etc/systemd/system/ethtool.service:

[Unit]
Description=ethtool script

[Service]
ExecStart=/path/to/yourscript.sh

[Install]
WantedBy=multi-user.target

Und Skript /path/to/yourscript.sh(nicht vergessen chmod +x)

#!/bin/bash
ethtool --offload <net> rx off

Aktivieren Sie Ihren Service

systemctl enable ethtool

Es wird beim Booten als root ausgeführt.


4
Wenn die ausgezeichnete Antwort von @deimos hilfreich war, akzeptieren Sie sie bitte: askubuntu.com/tour Die Suchenden werden es zu schätzen wissen, dass die Antwort wie erwartet funktioniert.
Chili555

sudo systemctl start ethtoolum den Dienst sofort zu starten. systemctl status ehttoolum den Status anzuzeigen (ausgeführt, aktiviert und protokolliert). Erfahren Sie mehr mitman systemctl
Victor Lamoine

4

Fügen Sie Ihre Befehle in /etc/rc.local ein oder erstellen Sie diese Datei, falls sie nicht vorhanden ist:

 touch /etc/rc.local
 chmod +x /etc/rc.local

Alle diese Aktionen müssen als root ausgeführt werden.

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.