¿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.