
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.sh
wie 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 $PATH
Variabledas 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 reboot
Befehl 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.log
erstellt wird und das Datum jede Minute dort ausgedruckt wird.