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.