Ausführen von Befehlen alle 5 Minuten

Ausführen von Befehlen alle 5 Minuten

Ich habe ein Lizenzierungssystem für mein Skript. Ich möchte alle 5 Minuten prüfen, ob eine Lizenz vorhanden ist.

Ich habe meins licensechecker.shwie folgt zu Crontab hinzugefügt;

*/5 * * * * sh /path/to/file/licensechecker.sh

Aber es scheint, dass es nicht funktioniert. Ich habe es getestet mit:

*/1 * * * * reboot

Aber mein VPS wurde nicht neu gestartet.

Ich habe die Protokolle überprüft:

Sep 3 15:42:01 eyup CRON[23368]: (root) CMD (reboot) 
Sep 3 15:42:01 eyup CRON[23366]: (CRON) info (No MTA installed, discarding output) 
Sep 3 15:43:01 eyup CRON[23675]: (root) CMD (reboot) 
Sep 3 15:43:01 eyup CRON[23674]: (CRON) info (No MTA installed, discarding output) 
Sep 3 15:44:01 eyup CRON[24023]: (root) CMD (reboot) 
Sep 3 15:44:01 eyup CRON[24022]: (CRON) info (No MTA installed, discarding output) 
Sep 3 15:45:01 eyup CRON[24336]: (root) CMD (reboot)

Antwort1

Cron verwendet nicht den PATH Ihres Benutzers,Es verfügt über eine eigene, fest codierte $PATHVariabledas auf gesetzt ist /usr/bin:/bin. Daher können nur Befehle, die in einem dieser beiden Verzeichnisse gespeichert sind, nach Namen ausgeführt werden. Für alle anderen benötigen Sie den vollständigen Pfad zur ausführbaren Datei. Da sich Ihr rebootBefehl in befindet /sbin, benötigen Sie diese Zeile:

*/1 * * * * /sbin/reboot

Dies ist jedoch keine wirklich gute Testmethode, da Sie große Schwierigkeiten haben werden, diese Zeile zu entfernen, sobald sie funktioniert, da Ihr Computer jede Minute neu gestartet wird. Sie können stattdessen mit einem sicheren Befehl wie diesem testen:

*/1 * * * * /bin/date > /tmp/date.log

Und dann einfach prüfen, ob die Datei /tmp/date.logerstellt wird und das Datum jede Minute dort ausgedruckt wird.

verwandte Informationen