Como executo um script como sudo no momento da inicialização no Ubuntu 18.04 Server? [duplicado]

11

Como executo um script como sudo no momento da inicialização?

Preciso executar ethtool --offload <net> rx offpara desativar a mensagem de erro irritante do jme udp checksum.

Amie Nel
fonte
por que você acredita que precisaria do sudo no momento da inicialização?
Rinzwind
@Rinzwind provavelmente porque o ethtool precisa de raiz para ser executado. Unidade SystemD como raiz é a melhor abordagem #
Thomas Ward
1
"como sudo" - você quer dizer "como root(o usuário todo poderoso com $UID=0)". sudoé uma ferramenta para permitir que um usuário comum execute um comando como root. "no boot" - tudo que está envolvido com corridas de inicialização do sistema comoroot
waltinator
@ waltinator: exceto coisas que eliminam privilégios; por exemplo, você pode fazer com que seu sistema inicie uma sessão do servidor X + do usuário para um determinado usuário. Porém, rodar ethtoolvia sudo a partir de algo que havia perdido privilégios (como sugerem as perguntas desta pergunta) seria uma péssima idéia vs. colocá-lo em /etc/rc.localuma maneira mais "moderna" de executar as tarefas como root durante a inicialização.
Peter Cordes

Respostas:

15

Você pode criar um serviço systemd.

Crie um arquivo /etc/systemd/system/ethtool.service:

[Unit]
Description=ethtool script

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

[Install]
WantedBy=multi-user.target

E roteiro /path/to/yourscript.sh(não esqueça chmod +xdisso)

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

Ative seu serviço

systemctl enable ethtool

Ele será executado na inicialização como root.

deimos
fonte
4
Se a resposta excelente do @deimos foi útil, aceite-o: askubuntu.com/tour Os usuários gostarão de saber que a resposta funciona conforme o esperado.
chili555
sudo systemctl start ethtoolpara iniciar o serviço imediatamente. systemctl status ehttoolpara exibir o status (em execução, ativado e log). Saiba mais comman systemctl
Victor Lamoine
4

Coloque seus comandos em /etc/rc.local ou crie esse arquivo se ele não existir:

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

Todas essas ações precisam ser executadas como raiz.

Willem Vermin
fonte