Configure um cron job para ser executado somente se o laptop estiver conectado?

1

Estou configurando um cron job para atualizar meu banco de dados nmzmail periodicamente, mas gostaria que o cron executasse somente se meu laptop estivesse conectado. Existe uma maneira de fazer isso? Se não há um comando cron embutido, então existe uma maneira de verificar através da linha de comando que eu poderia usar em um script simples?

    
por Brad 23.06.2011 / 02:20

3 respostas

1

Eu expandiria um pouco na primeira resposta e, em vez disso, faria algo assim para uma entrada do cron:

[ $(cat /proc/acpi/ac_adapter/AC/state | awk '{print $NF}') = 'on-line' ] && /path/to/your/script_file

Eu prefiro nem iniciar meu script, a menos que o teste seja bem-sucedido. Nesta instância, o cron nunca iniciará o script, se o laptop estiver com bateria.

    
por slashdot 23.06.2011 / 05:12
1

Uma versão mais simples usando o awk:

[ $(awk '{print $NF}' /proc/acpi/ac_adapter/AC/state) = 'on-line' ] && /path/to/your/script_file

mas esta versão ainda parece mais simples IMHO:

grep -q on-line /proc/acpi/ac_adapter/AC/state && /path/to/your/script_file
    
por Simon Déziel 30.06.2011 / 01:01
0

O que você pode fazer é verificar se / proc / acpi / ac_adapter / AC / state contém a palavra on-line. Você pode colocar o seguinte no início do trabalho do cron:

# Do nothing when no AC power is available
grep -q on-line /proc/acpi/ac_adapter/AC/state || exit 0
    
por Simon Déziel 23.06.2011 / 04:12