é possível acordar um dispositivo Linux em um horário específico

6

Eu rodei o Debian em uma placa embutida. Eu gostaria de suspender ou hibernar o conselho às 10 da noite e acordá-lo às 7 da manhã. Não há problema em suspender / hibernar o fórum por pmi action suspend / hibernate . Mas, eu me pergunto se é possível programar o fórum para acordar em um horário específico (talvez usando cron ou alguma outra coisa?). Se for o caso, você poderia por favor explicar todos os passos necessários para que eu possa fazer isso?

Por favor, note que é possível acordar uma placa incorporada usando um sinal de interrupção externo ou construir um circuito simples com um MCU como PIC, temporizador e relé para definir quando acordar a placa. Mas é não o que estou pedindo. Eu gostaria de saber se existe algum método no Linux para executar a operação de ativação. A placa tem uma conexão Wi-Fi e não é possível conectar outro cabo além do cabo de alimentação (não escreva sobre wake-on-lan).

    
por Angs 12.07.2013 / 13:27

2 respostas

13

Considere o que você está pedindo. Você quer que um único dispositivo, que está desligado, execute algum código em algum momento específico que o excita. O que executaria esse código? O que faria o dispositivo executar esse código?

Dependendo de quão profundamente o dispositivo está dormindo, pode ser possível configurar o BIOS para ligar o dispositivo em um horário específico, se o BIOS suportar tal recurso. Você estaria mexendo diretamente com os bits da memória CMOS ao desligar e esperando não corromper nada, mas, em princípio, isso deve ser possível, e se você não precisar, por exemplo, resiliência no caso de uma atualização do BIOS, pode até ser prático. Isso ainda depende do dispositivo não estar totalmente desligado; algo precisa estar monitorando o relógio de tempo real do sistema e executando uma sequência de inicialização quando ele atinge um valor pré-selecionado. O mesmo acontece com técnicas como Wake on LAN, Wake on Ring, etc., que dependem de alguma coisa que aciona o evento power-on. (Eu tenho um voto negativo agora para escrever sobre o Wake on LAN, apesar de você pedir que os respondentes não o façam ...?)

Mais importante, o que é acionado no ATX (mesmo com o pressionamento do botão liga / desliga) é uma transição de um estado de energia para outro . A única maneira de desligar completamente um sistema ATX é desligando a fonte de alimentação usando o interruptor na PSU ou desconectando o cabo de alimentação. Isto em contraste com AT PSUs, que na verdade totalmente desligado quando você desligou o computador porque o interruptor de energia estava alinhado com o cabo de alimentação da mesma forma que os interruptores de energia ATX PSU (não o poder do computador botão) são. Isso não faz diferença, porque se o sistema está totalmente desligado ou simplesmente executando algum tipo de loop que aguarda o clock do sistema atingir um valor específico, não há nada rodando o sistema operacional, e a CPU, mesmo se ele estiver ligado (que é um detalhe de implementação da placa-mãe e do BIOS; eles podem estar usando uma CPU suplementar e de baixa potência apenas para tarefas simples como essa), não estará executando o código instalado, portanto não há Linux em lugar algum à vista, tanto quanto a CPU está em causa, muito menos qualquer coisa como o cron.

Linha de fundo; Eu ficaria excepcionalmente surpreso se o que você está pedindo é factível diretamente através do Linux , embora possa ser possível, olhando para a imagem maior do hardware e firmware ao redor. A aposta mais segura quase certamente é precisamente aquele gatilho externo, programado no desligamento para acionar uma seqüência de ativação após um determinado intervalo ou em um determinado momento (se tiver um RTC independente).

    
por 12.07.2013 / 13:45
0

Apenas para qualquer outra pessoa que esteja procurando por isso, observe a interface do RTC. No meu sistema atual, escrever uma data no futuro para /sys/class/rtc/rtc0/wakealarm fará o sistema acordar no futuro. Por exemplo:

# wake up the system in 3 minutes
sh -c "echo 'date '+%s' -d '+ 3 minutes'' > /sys/class/rtc/rtc0/wakealarm"

Altere o + 3 minutes para tomorrow 0700 próximo do que você deseja, a menos que você execute o comando após a meia-noite ...

Encontrei isso em linux.com .

    
por 02.01.2016 / 10:03