it-swarm.com.de

Was ist / dev / null 2> & 1?

Ich habe diesen Code in /etc/cron.daily/apf gefunden

#!/bin/bash  
/etc/apf/apf -f >> /dev/null 2>&1  
/etc/apf/apf -s >> /dev/null 2>&1  

Die Firewall wird geleert und neu geladen.
Ich verstehe das >> /dev/null 2>&1 Teil.

Was ist der Zweck, dies im Cron zu haben? Es setzt meine Firewall-Regeln außer Kraft. Kann ich diesen Cron-Job sicher entfernen?

190
resting

>> /dev/null Leitet die Standardausgabe (stdout) zu /dev/null Um, wodurch sie verworfen wird.

(Das >> Erscheint irgendwie überflüssig, da >> Anhängen bedeutet, während > Abschneiden und Schreiben bedeutet und entweder Anhängen an oder Schreiben an /dev/null Dasselbe hat Ich benutze normalerweise nur >.)

2>&1 Leitet Standardfehler (2) Zur Standardausgabe (1) Um, die diese dann ebenfalls verwirft, da die Standardausgabe bereits umgeleitet wurde.

293
zigg

Teilen wir die Anweisung >> /dev/null 2>&1 In Teile:


Teil 1: >> Ausgabeumleitung

Dies wird verwendet, um die Programmausgabe umzuleiten und die Ausgabe am Ende der Datei anzuhängen. Mehr ...


Teil 2: /dev/null Spezialdatei

Dies ist eine Pseudo-Geräte-Spezialdatei.

Mit dem Befehl ls -l /dev/null Erhalten Sie Details zu dieser Datei:

crw-rw-rw-. 1 root root 1, 3 Mar 20 18:37 /dev/null

Hast du crw beobachtet? Das heißt, es handelt sich um eine Pseudo-Device Datei vom Typ Character-Special-File , die den seriellen Zugriff ermöglicht.

/dev/null Akzeptiert und verwirft alle Eingaben. Erzeugt keine Ausgabe (gibt beim Lesen immer eine Dateiendeanzeige zurück). Hinweis: Wikipedia


Teil 3: 2>&1 Dateideskriptor

Wenn Sie ein Programm ausführen, öffnet das Betriebssystem immer drei Dateien STDIN, STDOUT und STDERR, wie wir wissen, wann immer eine Datei geöffnet wird, Betriebssystem (von Kernel) gibt eine nicht negative Ganzzahl mit dem Namen Dateideskriptor zurück. Der Dateideskriptor für diese Dateien lautet 0, 1 bzw. 2.

Also sagt 2>&1 Einfach Weiterleiten von STDERR zu STDOUT

& Bedeutet, dass alles, was folgt, ein Dateideskriptor ist, kein Dateiname.

Kurz gesagt, mit diesem Befehl weisen Sie Ihr Programm an, während der Ausführung nicht zu schreien.

Welche Bedeutung hat die Verwendung von 2>&1?

Wenn Sie keine Ausgabe erstellen möchten, auch wenn im Terminal ein Fehler aufgetreten ist. Betrachten wir zum besseren Verständnis das folgende Beispiel:

$ ls -l > /dev/null

Für den obigen Befehl wurde keine Ausgabe im Terminal gedruckt, aber was passiert, wenn dieser Befehl einen Fehler erzeugt:

$ ls -l file_doesnot_exists > /dev/null 
ls: cannot access file_doesnot_exists: No such file or directory

Obwohl ich die Ausgabe auf /dev/null Umleitung, wird sie im Terminal gedruckt. Dies liegt daran, dass wir die Fehlerausgabe nicht auf /dev/null Umleiten. Um die Fehlerausgabe ebenfalls umzuleiten, müssen Sie 2>&1 Hinzufügen.

$ ls -l file_doesnot_exists > /dev/null 2>&1
132
Vishrant

Auf diese Weise können Sie ein Programm im Hintergrund ausführen und alle Ausgaben ausblenden.

/dev/null ist ein spezielles Dateisystemobjekt, das alles wegwirft, was darin geschrieben ist. Das Umleiten eines Streams bedeutet, dass eine Ausgabe ausgeblendet wird.

Das 2>&1 part bedeutet "Ausgabe- und Fehlerstrom umleiten". Selbst wenn Ihr Programm in stderr schreibt, wird diese Ausgabe nicht angezeigt.

51
dasblinkenlight

/dev/null - Standarddatei, die alles verwirft, was Sie darauf schreiben, aber meldet, dass der Schreibvorgang erfolgreich war. 1 Ist stdout und 2 Ist stderr. 2>&1 Leitet stderr zu stdout weiter. &1 Gibt den Dateideskriptor (stdout) an, andernfalls (wenn Sie nur 1 Verwenden) leiten Sie stderr zu der Datei mit dem Namen 1 Um. [any command] >>/dev/null 2>&1 Leitet alle stderr nach stdout um und schreibt all das nach /dev/null.

13
Yura

Ich verwende >> /dev/null 2>&1 Für stillen Cronjob, Cronjob erledigt den Job, schicke aber keinen Bericht an meine E-Mail.

So weit ich weiß, entferne /dev/null Nicht, es ist besonders nützlich, wenn du cpanel ausführst, und kann zum Wegwerfen von Cronjob-Berichten verwendet werden.

5
Christian

Wie von den anderen beschrieben, beseitigt das Schreiben in/dev/null die Ausgabe eines Programms. In der Regel sendet cron eine E-Mail für jede Ausgabe des Prozesses, der mit einem Cronjob gestartet wurde. Wenn Sie also die Ausgabe in/dev/null schreiben, verhindern Sie, dass Spam-Mails gesendet werden, wenn Sie Ihre Adresse in cron angegeben haben.

0
FSMaxB

Bearbeiten /etc/conf.apf. Einstellen DEVEL_MODE="0". DEVEL_MODE einstellen 1 fügt einen Cron-Job hinzu, um apf nach 5 Minuten zu stoppen.

0
dstonek