Turtle: UNIX: Unterdrückung von Fehlermeldungen

Hallo,

ich lasse per CRONJOB die Datei cron.daily ausführen.
Diese verschiebt pdf-Dokumente aus einem in ein anderes Verzeichnis.

Der Inhalt der datei sieht so aus:

move pdf documents to download path and set user rights

mv -f /home/virtual/jubo.de/home/upload/*.pdf /home/virtual/jubo.de/var/www/html/_shop/_downloads
chown admin61.admin61 /home/virtual/jubo.de/var/www/html/_shop/_downloads/*.pdf

Grundsätzlich ist es so, dass Fehlermeldungen bei Ausführen des CRONJOBs per Mail an mich gesendet werden.

Wenn in dem Ausgangsverzeichnis keine pdf-Dokumente vorhanden sind, dann gibt es leider auch eine Fehlermeldung deshalb.
Diese Fehlermeldung möchte ich aber unterdrücken, da ich es nicht als Fehler werte wenn keine pdf-Dokumente vorhanden sind.
Wie schaffe ich das?

Die Fehlermeldung sieht so aus:

mv: cannot stat `/home/virtual/jubo.de/home/upload/*.pdf': No such file or directory

Viele Grüsse und danke im vorraus,
Turtle

  1. Hi!

    Wenn in dem Ausgangsverzeichnis keine pdf-Dokumente vorhanden sind, dann gibt es leider auch eine Fehlermeldung deshalb.
    Diese Fehlermeldung möchte ich aber unterdrücken, da ich es nicht als Fehler werte wenn keine pdf-Dokumente vorhanden sind.
    Wie schaffe ich das?

    Die Fehlermeldung sieht so aus:

    mv: cannot stat `/home/virtual/jubo.de/home/upload/*.pdf': No such file or directory

    Das ist generell mit »Output-Redirection« möglich:

    mv -f /home/virtual/jubo.de/home/upload/*.pdf /home/virtual/jubo.de/var/www/html/_shop/_downloads > /dev/null 2>&1

    Damit werden alle Ausgaben (also stdout und stderr) nach /dev/null umgeleitet und du bekommst auch keine Mail mehr.

    Grüße,
    Fabian St.

  2. Moin,

    mv -f /home/virtual/jubo.de/home/upload/*.pdf /home/virtual/jubo.de/var/www/html/_shop/_downloads
    chown admin61.admin61 /home/virtual/jubo.de/var/www/html/_shop/_downloads/*.pdf

    schicke die Fehlermeldung nach /dev/null

    An das Ende der btreffenden Befehlzeile 2> /dev/null anhängen
    Beispiel: rm file.txt 2> /dev/null

    regds
    Mike©

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
  3. Hallo Turtle,

    Wenn in dem Ausgangsverzeichnis keine pdf-Dokumente vorhanden sind, dann gibt es leider auch eine Fehlermeldung deshalb.
    Diese Fehlermeldung möchte ich aber unterdrücken, da ich es nicht als Fehler werte wenn keine pdf-Dokumente vorhanden sind.
    Wie schaffe ich das?

    Du kannst zwei Dinge machen: 1) kannst Du alle Fehlermeldungen unterdrücken, indem Du an einen Befehl 2>/dev/null anhängst (das leitet die Fehlerausgabe auf /dev/null um, und /dev/null kannst Du mit einem schwarzen Loch vergleichen):

    mv -f /home/virtual/jubo.de/home/upload/*.pdf /home/virtual/jubo.de/var/www/html/_shop/_downloads 2>/dev/null

    Allerdings unterdrückst Du somit auch Fehlermeldungen, die aus anderen Gründen auftauchen (bspw: aus irgend einem Grund stimmen die Dateirechte nicht mehr und das »mv« schlägt deswegen fehl - dann würdest Du ja informiert werden wollen, oder?). Insofern halte ich es für besser, einfach zu Prüfen, ob das »*« von der Shell expandiert wird (Dateien existieren) oder nicht:

    $EXPANDIERT enthält nach dieser Zeile entweder

    /home/virtual/jubo.de/home/upload/*.pdf oder eine Liste von Dateien

    je nachdem, ob Dateien existieren, oder nicht.

    EXPANDIERT=$(echo /home/virtual/jubo.de/home/upload/*.pdf)

    Hier wird nun $EXPANDIERT mit /home/virtual/jubo.de/home/upload/*.pdf

    verglichen - wenn $EXPANDIERT *nicht* diesen Wert hat, enthält es eine

    Liste mit Dateien, und somit existieren überhaupt welche

    if [ "/home/virtual/jubo.de/home/upload/*.pdf" != "${EXPANDIERT}" ] ; then

    # Deswegen können die Dateien auch verschoben werden
      mv -f /home/virtual/jubo.de/home/upload/*.pdf /home/virtual/jubo.de/var/www/html/_shop/_downloads

    fi

    Viele Grüße,
    Christian