
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 -e
no 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 poweroff
por /sbin/shutdown
en mi script y ahora se ejecuta como se esperaba.
#!/bin/bash
if ! on_ac_power;
then
/sbin/shutdown
fi