Ubuntu - execute o comando na inicialização com “sudo”

90

Eu gostaria de executar um sudocomando quando o Ubuntu iniciar (antes que alguém faça login):

sudo searchd

Como eu faria isso?

Mark Willis
fonte

Respostas:

194

Você pode adicionar o comando no /etc/rc.localscript que é executado no final da inicialização.

Escreva o comando antes exit 0. Qualquer coisa escrita depois exit 0nunca será executada.

Didier Trosset
fonte
38
Antes, com certeza. Qualquer coisa escrita depois exit 0nunca será executada.
Didier Trosset
Oi eu também tenho um comando rvmsudo para ser executado na mesma situação. o comando normalmente solicitaria a senha. Haverá problemas se eu colocar o comando diretamente em /etc/rc.local?
ravi1991
@fmonegaglia Depende. Se você deseja que o comando seja iniciado e o script espera que ele termine antes de continuar com o próximo comando no script, não &. Se você deseja que o comando a seguir seja iniciado mesmo que o atual não tenha sido concluído, adicione a &.
Didier Trosset
@NoOne Verifique os direitos de acesso neste arquivo para o usuário atual. Iniciar o comando do editor com sudo pode resolver o problema.
Didier Trosset
1
Claro que existe e sim, eu configurei o bit executável. Ao tentar habilitar o serviço, só recebo The unit files have no installation config (WantedBy, RequiredBy, Also, Alias settings in the [Install] section, and DefaultInstance for template units) […].algum conselho sobre isso?
oarfish de
9

Edite a configuração tty /etc/init/tty*.confcom um shellscript como parâmetro:

(...)
exec /sbin/getty -n -l  theInputScript.sh -8 38400 tty1
(...)

Isso pressupõe que estamos editando tty1 e o script que lê a entrada é theInputScript.sh.

Uma palavra de advertência: este script é executado como root, então quando você está inserindo coisas nele, você tem privilégios de root. Anexe também um caminho para a localização do script.

Importante: o script quando terminar, deve invocar o / sbin / login, caso contrário você não conseguirá fazer o login no terminal.

Pepita
fonte
1
esta resposta foi muito útil para mim ao construir nosso dispositivo de produto, muito obrigado
José F. Romaniello
0

Boas respostas. Você também pode definir tarefas (ou seja, comandos) com " Crontab " para obter mais flexibilidade (que oferece diferentes opções para executar scripts, registrar as saídas, etc.), embora exija mais tempo para ser entendido e definido corretamente:

Usando '@reboot' você pode executar um comando uma vez, na inicialização.

Concluindo : corra$ sudo crontab -e -u root

E adicione uma linha no final do arquivo com seu comando da seguinte maneira:

@reboot sudo searchd
Javi
fonte