No Debian os seguintes pacotes usam / run / initctl: systemd, libvirt, sysvinit, refpolicy, gradm2. (de link ).
Acho que é a maneira normal de dizer ao init para alterar o nível de execução.
Eu tenho investigado o código de uma UPS por um Raspberry Pi que está usando sysv init em vez de systemd (preferência pessoal e familiaridade). Eu estava investigando como um script privilegiado - possivelmente parte ou executado em /etc/rc.local - diria ao init que havia uma falta de elétrons no sistema de fornecimento de energia . A página init(8)
man informa sobre como escrever uma única letra maiúscula ('F'ailing,' O'k ou criticamente 'L'ow) em anteriormente /etc/powerstatus
, mas agora /var/run/powerstatus
e, em seguida, enviar init
a SIGPWR
sinal; mas há o aviso de que:
Usage of
SIGPWR
and/etc/powerstatus
is discouraged. Someone wanting to interact with init should use the/run/initctl
control channel - see the source code of the sysvinit package for more documentation about this.
Eu olhei para a fonte hospedada pelo gnu.org, mas eu não vi nenhum exemplo de nada usando esta nova interface para dizer init
coisas.
Curiosamente, a hidra que é systemd
tenta replicar essa interface, pois acho que algumas coisas não gostam de não estar por perto, mas eu não encontrei algo que realmente a use. Existe uma coisa dessas? Eu esperaria algum software relacionado ao UPS, por exemplo nut
mas eu não acho que isso acontece ...
Esta questão, apesar de mencionar "Raspberry Pi" não se destina a ser específica para essa plataforma ou as distribuições como Raspbian que são executadas nela.
Essas perguntas e suas respostas foram bastante esclarecedoras ao preencher alguns detalhes relacionados:
Editar: pelo menos um dos Q & A acima também indicou porque algumas pessoas têm / dev / initctl e outras / run / initctl - o que era algo que eu não sabia (era uma coisa do Debian).
No Debian os seguintes pacotes usam / run / initctl: systemd, libvirt, sysvinit, refpolicy, gradm2. (de link ).
Acho que é a maneira normal de dizer ao init para alterar o nível de execução.
Eu acredito que reboot
usa isso.
Faça um strace
de reboot
:
# strace -s 128 -f reboot
Em algum lugar na parte inferior, vejo:
open("/dev/initctl", O_WRONLY) = 3
write(3, "i\t# strace -s 128 -f reboot
open("/dev/initctl", O_WRONLY) = 3
write(3, "i\t%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%INIT_HALT%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%"..., 384) = 384
close(3)
...
open("/dev/initctl", O_WRONLY) = 3
write(3, "i\t%pre%%pre%%pre%06%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%"..., 384) = 384
close(3)
%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%INIT_HALT%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%"..., 384) = 384
close(3)
...
open("/dev/initctl", O_WRONLY) = 3
write(3, "i\t%pre%%pre%%pre%06%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%"..., 384) = 384
close(3)