#!/bin/bash # Konfigurierbare Variablen CRON_PHP_PATH="/var/www/html/ilias/cron/cron.php" # Pfad zur cron.php CLIENT_ID="iliasschoolmaster" # Client-ID für den Cronjob USER="root" # Benutzer für den Cronjob LOGFILE="/opt/iliasdata/log/crontrash.log" # Logdatei für die Cronjob-Ausgabe # Datenbankkonfiguration DATABASE="Qiliasmaster_kivinan" # Überprüfen, ob das Skript als root ausgeführt wird if [ "$EUID" -ne 0 ]; then echo "Bitte das Skript als root ausführen." exit 1 fi # Überprüfe den Status des Cronjobs sysc_trash echo "Überprüfe den Status des Cronjobs sysc_trash..." STATUS_OUTPUT=$(mysql -D $DATABASE -sse "SELECT job_status, job_result_status, running_ts, alive_ts, job_status_ts, job_result_message FROM cron_job WHERE job_id = 'sysc_trash';") # Überprüfe, ob die Abfrage erfolgreich war if [ -z "$STATUS_OUTPUT" ]; then echo "Cronjob sysc_trash wurde nicht gefunden. Bitte den Namen überprüfen." exit 1 fi # Status aus der Datenbankabfrage extrahieren read -r JOB_STATUS JOB_RESULT_STATUS RUNNING_TS ALIVE_TS JOB_STATUS_TS JOB_RESULT_MSG <<< "$STATUS_OUTPUT" echo "Aktueller Jobstatus: job_status = '$JOB_STATUS', job_result_status = '$JOB_RESULT_STATUS', running_ts = '$RUNNING_TS', alive_ts = '$ALIVE_TS', job_status_ts = '$JOB_STATUS_TS'" echo "Job Ergebnisnachricht: $JOB_RESULT_MSG" # Überprüfen, ob der Cronjob im Fehlerzustand oder in einem ungültigen Zustand ist if [[ "$JOB_RESULT_STATUS" -eq 4 || "$RUNNING_TS" -gt 0 ]]; then echo "Cronjob sysc_trash befindet sich in einem Fehlerzustand oder wurde unterbrochen." # Setze den Cronjob zurück echo "Setze den Cronjob sysc_trash zurück..." mysql -D $DATABASE -e " UPDATE cron_job SET job_status = 1, job_result_status = 0, running_ts = 0, alive_ts = 0, job_status_ts = UNIX_TIMESTAMP(), job_result_ts = UNIX_TIMESTAMP() - 86400 WHERE job_id = 'sysc_trash'; " if [ $? -eq 0 ]; then echo "Cronjob sysc_trash wurde erfolgreich zurückgesetzt." else echo "Fehler beim Zurücksetzen des Cronjobs sysc_trash." exit 1 fi # Versuche, den Cronjob neu zu starten echo "Versuche, den Cronjob neu zu starten..." /usr/bin/php $CRON_PHP_PATH run-jobs $USER $CLIENT_ID > $LOGFILE 2>&1 if [ $? -eq 0 ]; then echo "Cronjob sysc_trash wurde erfolgreich neu gestartet." else echo "Fehler beim Starten des Cronjobs sysc_trash." exit 1 fi else echo "Cronjob sysc_trash läuft oder befindet sich nicht in einem Fehlerzustand." fi echo "Skript abgeschlossen." |