Como posso executar um comando após o boot?

26

Eu gostaria de executar o comando shell simples echo 1 > /proc/sys/kernel/sysrq em cada inicialização, para ativar as chaves sysrq. Quando no boot isso deve ser feito, e onde devo colocar um script para fazer isso?

    
por Demi 08.12.2013 / 08:10

3 respostas

35

Depende de distros.

Se você estiver em distribuições derivadas do Debian, existem pelo menos dois locais apropriados, /etc/rc.local e crontab. Você pode invocar crontab como root,

   crontab -e

e, em seguida, insira esta linha

   @reboot /home/my_name/bin/my_command

em que my_command é um arquivo executável ( chmod 755 my_command ).

Como alternativa, você pode colocar uma linha como esta

   /home/my_name/bin/my_command

em /etc/rc.local, e isso será executado por último. Em qualquer caso, os pls lembram que você está usando o ambiente raiz, não o seu. Também por esse motivo, é melhor usar caminhos absolutos.

Se você estiver em uma distro systemd (Arch Linux, Fedora 19, ...) a primeira opção (crontab) ainda é válida, enquanto a segunda (/etc/rc.local) não existe mais. Nesse caso, você deve aprender como iniciar um serviço para ser executado por systemctl , mas isso pode ser mais do que você esperava com sua pergunta simples.

    
por 08.12.2013 / 08:37
18

Se o seu sistema está executando uma versão do cron que o suporta (especificamente o Vixie cron), você pode usar @reboot em um cron job.

Esta é uma das 8 strings especiais que ela suporta.

Citando a página crontab(5) man (do meu sistema Ubuntu 12.04):

Instead of the first five fields, one of eight special strings may appear:

string         meaning
------         -------
@reboot        Run once, at startup.
@yearly        Run once a year, "0 0 1 1 *".
@annually      (same as @yearly)
@monthly       Run once a month, "0 0 1 * *".
@weekly        Run once a week, "0 0 * * 0".
@daily         Run once a day, "0 0 * * *".
@midnight      (same as @daily)
@hourly        Run once an hour, "0 * * * *".

Please note that startup, as far as @reboot is concerned, is the time when the cron(8) daemon startup. In particular, it may be before some system daemons, or other facilities, were startup. This is due to the boot order sequence of the machine.

Isso está longe de ser a única maneira de executar algo no momento da inicialização, mas é uma alternativa.

    
por 11.09.2012 / 00:29
10

Praticamente todas as variantes do Linux (há muito, muito tempo) têm um arquivo /etc/rc.local que é executado na inicialização - você pode simplesmente adicionar o comando a ele.

Dito isso, você nem precisa fazer isso. A maneira "correta" seria modificar / adicionar a linha kernel.sysrq = 1 em /etc/sysctl.conf

    
por 08.12.2013 / 08:32