Comment exécuter un script en tant que sudo au démarrage sur Ubuntu 18.04 Server? [dupliquer]


11

Comment exécuter un script en tant que sudo au démarrage?

Je dois exécuter ethtool --offload <net> rx offpour désactiver le message d'erreur de somme de contrôle jme udp ennuyeux.


pourquoi croyez-vous que vous auriez besoin de sudo au démarrage?
Rinzwind

@Rinzwind probablement parce que ethtool a besoin de root pour fonctionner. L'unité SystemD en tant que root est la meilleure approche
Thomas Ward

1
"as sudo" - vous voulez dire "as root(l'utilisateur tout-puissant avec $UID=0)". sudoest un outil permettant à un utilisateur régulier d'exécuter une commande en tant que root. "au démarrage" - tout ce qui concerne le démarrage du système fonctionne commeroot
waltinator

@waltinator: sauf les choses qui perdent des privilèges; Par exemple, vous pouvez demander à votre système de démarrer une session serveur X + utilisateur pour un certain utilisateur. Mais exécuter ethtoolvia sudo à partir de quelque chose qui avait abandonné les privilèges (comme le suggère le libellé de cette question) serait une très mauvaise idée que de le coller /etc/rc.localou de manière plus "moderne" pour que les choses s'exécutent en tant que root lors du démarrage.
Peter Cordes

Réponses:


15

Vous pouvez créer un service systemd.

Créez un fichier /etc/systemd/system/ethtool.service:

[Unit]
Description=ethtool script

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

[Install]
WantedBy=multi-user.target

Et le script /path/to/yourscript.sh(n'oubliez pas chmod +x)

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

Activez votre service

systemctl enable ethtool

Il s'exécutera au démarrage en tant que root.


4
Si @deimos excellente réponse a été utile, veuillez l'accepter: askubuntu.com/tour Les chercheurs apprécieront de savoir que la réponse fonctionne comme prévu.
chili555

sudo systemctl start ethtoolpour démarrer le service immédiatement. systemctl status ehttoolpour afficher l'état (en cours d'exécution, activé et journal). En savoir plus avecman systemctl
Victor Lamoine

4

Mettez vos commandes dans /etc/rc.local ou créez ce fichier s'il n'existe pas:

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

Toutes ces actions doivent être effectuées en tant que root.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.