2013-12-08 07:10:46 +0000 2013-12-08 07:10:46 +0000
27
27

Como posso executar um comando após o arranque?

Gostaria de executar o simples comando shell echo 1 > /proc/sys/kernel/sysrq em cada arranque, para activar as teclas sysrq. Quando é que isto deve ser feito no arranque, e onde devo colocar um guião para o fazer?

Respostas (3)

37
37
37
2013-12-08 07:37:04 +0000

Depende da distros.

Se estiver em distros derivadas de Debian, existem pelo menos dois locais apropriados, /etc/rc.local e crontab. Pode invocar crontab como raiz,

crontab -e

e depois inserir esta linha

@reboot /home/my_name/bin/my_command

onde my_command é um ficheiro executável (chmod 755 my_command).

Em alternativa, pode colocar uma linha como esta

/home/my_name/bin/my_command

em /etc/rc.local, e esta será executada por último. Em qualquer caso, as pls lembram-se de que está a usar o ambiente de raiz, não o seu. Também por esta razão, é melhor usar caminhos absolutos.

Se estiver numa distro systemd (Arch Linux, Fedora 19,…) a primeira opção (crontab) ainda é válida, enquanto que a segunda (/etc/rc.local) já não existe. Neste caso, deverá aprender como iniciar um serviço a ser executado por systemctl, mas isto pode ser mais do que aquilo que negociou com a sua simples pergunta.

19
19
19
2012-09-10 22:29:09 +0000

Se o seu sistema estiver a correr uma versão cron que o suporte (especificamente Vixie cron), pode usar @reboot num trabalho cron.

Esta é uma das 8 cordas especiais que suporta.

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

Em vez dos primeiros cinco campos, pode aparecer uma das oito cordas especiais:

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 * * * *".

Note-se que o arranque, no que diz respeito ao @reboot, é o momento em que o cron(8) daemon startup. Em particular, pode ser antes de alguns demónios do sistema, ou outras instalações, serem postos em funcionamento. Isto deve-se à sequência da ordem de arranque da máquina.

Esta está longe de ser a forma única de executar algo no momento do arranque, mas é uma alternativa.

9
9
9
2013-12-08 07:32:27 +0000

Praticamente todas as variantes do Linux (que remontam há muito, muito tempo) têm um ficheiro /etc/rc.local que corre ao arrancar - pode simplesmente adicionar-lhe o comando.

Dito isto, nem precisa de fazer isso. A forma “correcta” seria modificar / adicionar a linha kernel.sysrq = 1 em /etc/sysctl.conf