Ubuntu cortando sua própria fonte de alimentação: O que fazer antes da falta de energia?

1

Eu tenho um servidor de arquivos do Ubuntu que gostaria de ligar / desligar usando uma tomada elétrica de controle remoto. Eu também tenho um dispositivo que recebe e envia sinais de controle remoto; está conectado via USB; Eu uso um programa auxiliar para enviar sinais. Então, ao invés de enviar diretamente o sinal de poweroff para a tomada, eu envio um sinal de desligamento para o Ubuntu. A ideia é que o Ubuntu faça o desligamento e corte sua própria fonte de energia. Isso permite que eu inicie mais tarde o computador, ligando a tomada elétrica por controle remoto.

Pelo que entendi, idealmente, o poder de corte deve ser feito em /etc/rc0.d/S90halt , correto? Mas neste momento meu programa auxiliar que poderia enviar o sinal de poweroff para a tomada já estava morto.

Quais opções eu tenho? É possível manter o meu programa de controle remoto em execução? Eu poderia iniciá-lo em S90halt mesmo que o disco já esteja desmontado?

    
por Jack Miller 20.07.2017 / 08:28

1 resposta

0

Eu encontrei uma maneira de fazer isso:

Na inicialização, inicio meu programa auxiliar de controle remoto como um processo não modificado. No entanto, durante o desligamento ele fica morto por S20sendsigs . Então eu inicio de novo usando um novo script S21remotecontrol que novamente usa nohup. O programa auxiliar inicia um servidor da Web incorporado. Dessa forma, eu só precisava adicionar curl http://localhost:8081/poweroff a S90halt .

Não sei por que curl está realmente disponível em S90halt porque todos os sistemas de arquivos devem ter sido desmontados neste momento. No entanto, funciona. Meu trabalho ao redor não é usado: eu adicionei uma opção de atraso para que curl pudesse ser chamado antes de desmontar, mas atrasando o comando do switch por alguns segundos.

Importante! O programa auxiliar não deve escrever um arquivo de log, já que ele falhará após a desmontagem durante o desligamento e pode travar o programa. Para iniciar o ajudante eu uso: nohup command >/dev/null 2>&1 & .

    
por Jack Miller 20.07.2017 / 12:05