acpid - Hibernar quando desconectado

1

Sou novo em programação para Linux (lubuntu especificamente) e estou trabalhando em um projeto para colocar um laptop antigo e descartado do jeito que eu quero. Tenho acpi e acpid instalados, e quando executo o comando acpi, sou informado se meu laptop está conectado (carregando) ou desconectado (descarregando).

Gostaria agora de ter o laptop automaticamente hibernar quando o laptop estiver descarregando. Meu primeiro pensamento foi escrever um script que iria pesquisar o acpi a cada 30 segundos ou mais e depois executar um comando de hibernação sempre que ele respondesse com a palavra "descarregando". No entanto, entendo que o acpid é a melhor ferramenta para usar, já que é mais orientada a eventos. Eu não consigo encontrar nenhum material em fazer um laptop hibernar quando desconectado - algum conselho?

    
por Jake 22.08.2013 / 05:04

1 resposta

1

O daemon acpid deve receber eventos de bateria pelo subsistema ACPI. Quando você desconectar / conectar o laptop, deve haver eventos de bateria relacionados. Os eventos podem ser associados a ações como desligar / suspender / hibernar o sistema e assim por diante.

Primeiramente, tente verificar isso observando /var/log/messages ou arquivos de log relacionados ao desconectar o laptop. Deve haver algo como

... ACPI action undefined: ...

Se não houver nada, você pode tentar o comando acpi_listen , que se conecta ao acpid e ouve eventos.

Em seguida, você pode configurar um manipulador de eventos genérico no diretório /etc/acpi/events para eventos de bateria. Crie um arquivo, por exemplo battery.conf com o seguinte conteúdo:

event=battery.*
action=/etc/acpi/actions/battery.sh

Ele diz que qualquer evento de bateria deve ser processado pelo script battery.sh . Nesse script, eu monitoraria o status da bateria disponível no arquivo /proc/acpi/battery/*/state . Especialmente, verifique a linha "estado de carregamento" que deve mudar para "descarregar" quando você desconectar o laptop ou "carregar / carregar" quando conecte-o de volta.

Com base nessas informações, você pode executar o comando hibernate do manipulador de eventos battery.sh . Além disso, você pode encontrar alguns outros exemplos úteis, por exemplo no github .

    
por 22.08.2013 / 09:52