Ich habe Crontab-Aufgaben so eingerichtet, dass sie jede Minute ausgeführt werden.
* * * * * sudo /usr/bin/php /root/scrapers/terra_plf/terra_swap_api.php
Ich sehe das Protokoll in der Datei var/log/syslog:
Jan 3 15:14:01 clearthefog CRON[26579]: (root) CMD (/usr/bin/php /home/admin/scrapers/terra_plf/terra_swap_api.php)
Jan 3 15:15:01 clearthefog CRON[26623]: (root) CMD (sudo /usr/bin/php /root/scrapers/terra_plf/terra_swap_api.php)
Noch,nichts wird in die DB geschriebenwie die Datei terra_swap_api.php
es tun sollte. Irgendwelche Vorschläge, warum? Gibt es eine Möglichkeit zu überprüfen, ob die Datei tatsächlich ausgeführt wird?
Wenn ich dasselbe Skript in der CLI ausführe, funktioniert es perfekt: php terra_swap_api.php
Antwort1
Sie können nicht einfach sudo in cron verwenden, da nach dem sudo-Passwort gefragt wird. Sie müssten für diesen Befehl ein passwortloses sudo einrichten.
Da sich die PHP-Datei im Verzeichnis /root befindet (beachten Sie, dass dies ein Sicherheitsrisiko darstellt), können Sie die Crontab als Root ( sudo crontab -e
) installieren und die Zeile dort einfügen (ohne sudo).
Wenn für Ihr Skript keine Root-Befugnisse erforderlich sind, können Sie es ohne sudo ausführen. Sie müssten die Dateien jedoch an einen lesbaren Speicherort verschieben, da /root dem Root-Benutzer gehört und auf ihn beschränkt ist.