¿Cómo ejecuto un script como sudo en el momento del arranque en el servidor Ubuntu 18.04? [duplicar]


11

¿Cómo ejecuto un script como sudo en el momento del arranque?

Necesito ejecutar ethtool --offload <net> rx offpara deshabilitar el molesto mensaje de error de suma de comprobación jme udp.


¿Por qué crees que necesitarías sudo al momento del arranque?
Rinzwind

@Rinzwind probablemente porque ethtool necesita root para ejecutarse. La unidad SystemD como root es el mejor enfoque
Thomas Ward

1
"como sudo" - quieres decir "como root(el usuario todopoderoso con $UID=0)". sudoes una herramienta para permitir que un usuario normal ejecute un comando como root. "en el arranque" - todo lo relacionado con el inicio del sistema se ejecuta comoroot
waltinator

@waltinator: excepto cosas que caen privilegios; por ejemplo, puede hacer que su sistema inicie una sesión de servidor X + usuario para un determinado usuario. Pero correr a ethtooltravés de sudo desde algo que había perdido privilegios (como sugiere la redacción de esta pregunta) sería una muy mala idea en lugar de pegarlo en /etc/rc.localuna forma más "moderna" para que las cosas se ejecuten como root durante el arranque.
Peter Cordes

Respuestas:


15

Puede crear un servicio systemd.

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

[Unit]
Description=ethtool script

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

[Install]
WantedBy=multi-user.target

Y guión /path/to/yourscript.sh(no lo olvides chmod +x)

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

Habilita tu servicio

systemctl enable ethtool

Se ejecutará en el arranque como root.


44
Si la respuesta excelente de @deimos fue útil, acéptela: askubuntu.com/tour Los buscadores apreciarán saber que la respuesta funciona como se esperaba.
chili555

sudo systemctl start ethtoolpara iniciar el servicio de inmediato. systemctl status ehttoolpara mostrar el estado (en ejecución, habilitado y de registro). Obtenga más información conman systemctl
Victor Lamoine

4

Ponga sus comandos en /etc/rc.local o cree ese archivo si no existe:

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

Todas estas acciones tienen que hacerse como root.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.