Executar comando na inicialização como root

9

Eu preciso executar um script bash no momento da inicialização como superusuário no Xubuntu. Não sei por onde começar. Eu tenho que fazer algo descrito em um guia do Arch Linux. Esse guia diz exatamente:

Adicione o seguinte no final do arquivo: /etc/rc.sysinit

# Do my action
/etc/rc.d/do_my_action

/bin/dmesg >| /var/log/dmesg.log

Mas eu não tenho /etc/rc.sysinite /etc/rc.d/no Xubuntu. Tenho certeza de que existem equivalentes, certo?

Lorenzo-s
fonte

Respostas:

9

O arquivo que você deseja é /etc/rc.local. Este script será executado próximo ou no final do processo de inicialização. Assim, tudo deve estar pronto a essa hora.

No entanto, como o @ bodhi.zazen apontou, o Upstart pode ser a melhor opção para você. Confira .

Nota 1 : no 15.04 e posterior, o Ubuntu usa systemde não o Upstart. Portanto, se você quiser adotar uma abordagem de serviço, consulte esta resposta aqui por @muru

Nota 2 : No 16.10, não existe /etc/rc.localpor padrão, mas se você o criar e o tornar executável ( sudo chmod u+x /etc/rc.local), ele funcionará porque há um serviço systemd para puxá-lo, se existir. Não se esqueça de colocar uma linha exit 0no final do arquivo para impedir que quaisquer comandos com falha causem a interrupção de todo o processo de inicialização.

Scott Severance
fonte
Então, eu só tenho que colocar esse código aqui? Por enquanto, esse arquivo contém apenas exit 0. E se eu puder perguntar, na inicialização, quando rc.localexecutado, o sistema de arquivos está pronto para que eu também possa gravar um log em algum lugar do comando que quero executar?
lorenzo-s
Parece que você está tentando executar um script de inicialização (init). O Ubuntu usa o iniciante. O rc.local executará um comando ou uma série de comandos na inicialização e pode ou não ser sua melhor opção. O que você está tentando fazer exatamente ?
Panther
@ Lorenzo-s: Veja minha edição.
Scott Severance
Você também pode encontrar esta resposta útil: askubuntu.com/a/20347/3940
Takkat
1
Ok, eu resolvi passar my_scriptde /usr/local/binpara /usr/bin. Também posso salvar o logon /var/logusando my_script &>> /var/log/my_script. Muito obrigado.
Lorenzo-s