Ist es möglich, eine „if“-Anweisung in die Crontab eines Benutzers einzufügen, oder gibt es eine andere sinnvolle Möglichkeit, viele bedingte Cron-Jobs zu organisieren? Aus Sicht des Endbenutzers wäre es am einfachsten, wenn er die normale Crontab verwenden und seine Einträge möglichst einfach zwischen zwei Zeilen einfügen könnte.
Am besten sowas wie:
if [ something ]; then
* * * * * /usr/bin/php /path/to/file.php
0 0 * * * /usr/bin/php /path/to/file2.php
*/5 * * * * /root/script.sh
fi
Antwort1
Es ist nicht möglich, genau dies zu tun.
Sie können jedoch ein Skript wie dieses erstellen /usr/local/bin/check_live
, das mit dem Statuscode „0“ beendet wird, wenn der Server derzeit aktiv ist, und mit einem Wert ungleich „0“, wenn dies nicht der Fall ist.
Sie können dann Crontab-Zeilen wie die folgenden haben:
* * * * * /usr/local/bin/check_live && /usr/bin/php /path/to/file.php
0 0 * * * /usr/local/bin/check_live && /usr/bin/php /path/to/file2.php
*/5 * * * * /usr/local/bin/check_live && /root/script.sh
Antwort2
Ich würde nicht empfehlen, es in eine Crontab-Datei zu schreiben. Erstellen Sie stattdessen ein Skript, in dem Sie Ihre Bedingungen festlegen, und schreiben Sie es dann in die Crontab-Datei. Sie erhalten ein viel saubereres und organisierteres Setup.