Come posso eseguire uno script come sudo all'avvio sul server Ubuntu 18.04? [duplicare]


11

Come eseguo uno script come sudo al momento dell'avvio?

Ho bisogno di correre ethtool --offload <net> rx offper disabilitare il fastidioso messaggio di errore checksum jme udp.


perché credi che avresti bisogno di sudo al momento dell'avvio?
Rinzwind,

@Rinzwind probabilmente perché ethtool ha bisogno di root per funzionare. L'unità SystemD come root è l'approccio migliore
Thomas Ward

1
"as sudo" - intendi "as root(l'utente onnipotente con $UID=0)". sudoè uno strumento per consentire a un utente normale di eseguire un comando come root. "at boot" - tutto ciò che riguarda l'avvio del sistema funziona comeroot
waltinator il

@waltinator: tranne le cose che abbandonano i privilegi; ad es. puoi fare in modo che il tuo sistema avvii una sessione X server + utente per un determinato utente. Ma correre ethtoolvia sudo da qualcosa che ha lasciato cadere i privilegi (come suggerisce la formulazione di questa domanda) sarebbe davvero una cattiva idea rispetto a attaccarlo /etc/rc.localo in un modo più "moderno" per far funzionare le cose come root durante l'avvio.
Peter Cordes,

Risposte:


15

È possibile creare un servizio systemd.

Crea un file /etc/systemd/system/ethtool.service:

[Unit]
Description=ethtool script

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

[Install]
WantedBy=multi-user.target

E sceneggiatura /path/to/yourscript.sh(non dimenticarlo chmod +x)

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

Abilita il tuo servizio

systemctl enable ethtool

Funzionerà all'avvio come root.


4
Se la risposta eccellente di @deimos è stata utile, accettala: askubuntu.com/tour I ricercatori apprezzeranno sapere che la risposta funziona come previsto.
chili555

sudo systemctl start ethtoolper avviare immediatamente il servizio. systemctl status ehttoolper visualizzare lo stato (in esecuzione, abilitato e registra). Scopri di più conman systemctl
Victor Lamoine,

4

Inserisci i tuoi comandi in /etc/rc.local o crea quel file se non esiste:

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

Tutte queste azioni devono essere eseguite come root.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.