Cron-Job zum Ausschalten, wenn die Klimaanlage nicht angeschlossen ist

Cron-Job zum Ausschalten, wenn die Klimaanlage nicht angeschlossen ist

Ich versuche, mit einem Cron-Job ein einfaches Bash-Skript auszuführen, das mein Notebook ausschaltet, wenn es nicht an die Stromversorgung angeschlossen ist.

Mein Skript sieht wie folgt aus:

#!/bin/bash

if ! on_ac_power; then 
    poweroff          
fi

Und ich habe cron so konfiguriert, dass es jede Minute wie folgt ausgeführt wird:

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

Das Skript funktioniert einwandfrei, wenn ich es manuell ausführe, aber ansonsten scheint es unter Cron keine Wirkung zu haben.

Was übersehe ich hier?

Antwort1

Zunächst habe ich meinen Cron nicht unter Root ausgeführt.

Damit ein Cron unter Root ausgeführt werden kann, müssen Sie ihn anscheinend mit hinzufügen sudo crontab -e. Alles, was nur mit hinzugefügt wird, crontab -ewird nicht als sudo ausgeführt.

Zweitens, wie in der Referenz angegeben:

cron läuft standardmäßig in einer sehr eingeschränkten Umgebung, daher benötigen viele Befehle, die über den Befehlsnamen von einem Benutzerterminal ausgeführt werden, den vollständigen Pfad in einer Crontab oder eine Deklaration am Anfang der Crontab, um den Pfad zu erweitern.

Also habe ich es in meinem Skript poweroffdurch ersetzt /sbin/shutdownund jetzt läuft es wie erwartet.

#!/bin/bash

if ! on_ac_power; 
then 
    /sbin/shutdown        
fi

Referenz

verwandte Informationen