GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Crontab-Problem:Cron-Job funktioniert nicht, wenn der Prozentsatz verwendet wird

Frage: Was ist der Grund, warum mein Cron-Job nicht ausgeführt wird, wenn ich den Prozentsatz „%“ in meinem Cron-Job verwende? Wie kann dieses Problem gelöst werden?

Antwort: ‘%’ ist der neue Zeilenbezeichner im Cron-Befehl. Wenn Sie also % verwenden, wird dies als neue Zeile im Cron-Job interpretiert. Sehen wir uns an, wie wir dieses Problem lösen können, und verwenden Sie % im Cron-Job.

Problemdefinition mit Beispiel:„%“ im Cron-Job (nicht erfolgreicher Cron-Job)

* * * * * date +"%d" >> /tmp/non-working-ex1.txt

 
Zu Testzwecken haben alle Felder im obigen Crontab-Beispiel * darin. Dadurch wird der angegebene Cronjob jede Minute ausgeführt.
 
Um die crontab-Konfiguration zu verstehen, lesen Sie unseren früheren Artikel, der 15 fantastische Cron-Job-Beispiele enthält.
 
Wenn Sie Zugriff auf Syslog haben, sehen Sie eine ähnliche Zeile wie die folgende.

Jun 20 08:31:01 ubuntu-laptop /USR/SBIN/CRON[6752]: (ramesh) CMD (date +")

 
Im Syslog-Eintrag für dieses spezifische Beispiel wird der Befehl nur als:(date +”) angezeigt . Idealerweise sollte dies wie folgt angezeigt werden:date +”%d” . Dies zeigt an, dass der Prozentsatz als spezielles Symbol im Cron geparst wird. d.h. es beendet den Befehl genau bei %age.

Lösung mit Beispiel:Arbeiten Sie umher, um „%“ im Cron-Job zu verwenden.

Sie können dieses Problem mit den folgenden zwei Methoden lösen. Diese Lösung sollte das Problem auf allen Varianten von Unix/Linux lösen, einschließlich Ubuntu, Debian, Fedora, RedHat, CentOS, AIX usw.,

Methode 1:Escapezeichen für den Prozentsatz mit \

Sie können den Prozentsatz mit einem Backslash maskieren und ihn wie einen normalen Job arbeiten lassen.

$ crontab -l
* * * * * date +"\%M" > /tmp/working-ex1.txt

 
Hinweis: Dieses „\“ wird nicht vom Datumsbefehl oder einem anderen von Ihnen aufgerufenen Befehl gesehen. Das \ soll dem speziellen Verhalten von Prozent in Cron entkommen.

Methode 2:Shell-Skript verwenden

Erstellen Sie ein Shell-Skript mit dem Prozentbefehl und planen Sie das Shell-Skript als Cron-Job ein.

$ cat /bin/date.sh
date +"%d"

$ crontab -l
* * * * * /bin/sh /bin/date.sh > /tmp/working-ex2.txt

In der nächsten Minute wird der ausgeführte Befehl in der /tmp/working-ex2.txt
  ausgegeben
Jetzt haben Sie die folgende Zeile, die den Befehl erfolgreich im Syslog ausgeführt hat.

Jun 20 08:36:01 ubuntu-laptop /USR/SBIN/CRON[6962]: (ramesh) CMD (/bin/sh /bin/date.sh >> /tmp/working-ex2.txt)

 
Hinweis: Vergessen Sie nicht, diese Test-Cron-Einträge zu entfernen, da sie jede Minute ausgeführt werden.
 
Wenn Sie ein anderes Problem mit der Crontab hatten, teilen Sie uns dies im Kommentarbereich mit.


Linux
  1. Verwenden von at für Cron-Jobs zur einmaligen Verwendung in Linux

  2. Ubuntu – Crontab funktioniert nicht?

  3. Wie kann ich einen Cron-Job anzeigen, der gerade ausgeführt wird?

  4. Befehl bei Verwendung von sudo nicht gefunden

  5. Die SSH-Agent-Weiterleitung funktioniert nicht, selbst wenn `ssh -A` verwendet wird

So automatisieren Sie Aufgaben in Linux mit Crontab

Linux – Warum funktioniert USB nicht in Linux, wenn es in Uefi/Bios funktioniert?

Linux Crontab:15 fantastische Cron-Job-Beispiele

Warum sendet mir mein Cronjob keine E-Mail?

Warum funktioniert mein Crontab nicht und wie kann ich es beheben?

Welche Zeitzone verwendet ein Cronjob?