Trabajo cron para apagar cuando el aire acondicionado está desconectado y no funciona

Trabajo cron para apagar cuando el aire acondicionado está desconectado y no funciona

Estoy intentando ejecutar un script bash simple que apaga mi computadora portátil si no está conectada a la corriente alterna con una tarea cron.

Mi guión es el siguiente:

#!/bin/bash

if ! on_ac_power; then 
    poweroff          
fi

Y configuré cron para ejecutarlo cada minuto así:

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

El script funciona bien si lo ejecuto manualmente, pero por lo demás, parece no tener ningún efecto en cron.

¿Que me estoy perdiendo aqui?

Respuesta1

En primer lugar, no estaba ejecutando mi cron como root.

Aparentemente, para que un cron se ejecute bajo la raíz, debes agregarlo sudo crontab -e, cualquier cosa que se agregue solo con crontab -eno se ejecutará como sudo.

Segundo como se señala en la referencia:

cron se ejecuta en un entorno muy limitado de forma predeterminada, por lo que muchos comandos que se ejecutan mediante el nombre del comando desde la terminal de un usuario necesitan la ruta completa en un crontab o una declaración al comienzo del crontab para expandir la ruta.

Así que terminé reemplazando poweroffpor /sbin/shutdownen mi script y ahora se ejecuta como se esperaba.

#!/bin/bash

if ! on_ac_power; 
then 
    /sbin/shutdown        
fi

Referencia

información relacionada