Cron job para desligar quando o AC está desconectado e não está funcionando

Cron job para desligar quando o AC está desconectado e não está funcionando

Estou tentando executar um script bash simples que desliga meu notebook se ele não estiver conectado ao AC com um cron job.

Meu roteiro é o seguinte:

#!/bin/bash

if ! on_ac_power; then 
    poweroff          
fi

E configurei o cron para executá-lo a cada minuto assim:

*/1 * * * * /home/user/Documents/script.sh

O script funciona bem se eu executá-lo manualmente, mas, caso contrário, parece não ter efeito no cron.

O que estou perdendo aqui?

Responder1

Primeiro de tudo, eu não estava executando meu cron como root.

Aparentemente, para que um cron seja executado no root, você precisa adicioná-lo sudo crontab -e, qualquer coisa adicionada apenas com crontab -enão será executada como sudo.

Segundo, conforme apontado na referência:

O cron é executado em um ambiente muito limitado por padrão, portanto, muitos comandos executados via nome de comando de um terminal de usuário precisam do caminho completo em um crontab ou de uma declaração no início do crontab para expandir o caminho.

Acabei substituindo poweroffpor /sbin/shutdownno meu script e agora ele funciona conforme o esperado.

#!/bin/bash

if ! on_ac_power; 
then 
    /sbin/shutdown        
fi

Referência

informação relacionada