Faz qualquer coisa USE / dev / initctl ou / run / initctl

5

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).

    
por SlySven 16.12.2015 / 22:21

2 respostas

1

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.

    
por 12.02.2016 / 21:43
1

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)
    
por 02.03.2016 / 18:29