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.


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.