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

die Verwendung von < /dev/null &in der Kommandozeile

< /dev/null wird verwendet, um EOF sofort an das Programm zu senden, sodass es nicht auf Eingaben wartet (/dev/null , das Null-Gerät, ist eine spezielle Datei, die alle darauf geschriebenen Daten verwirft, aber meldet, dass der Schreibvorgang erfolgreich war, und keinem Prozess, der daraus liest, Daten bereitstellt, was sofort EOF ergibt). & ist eine spezielle Art von Befehlstrennzeichen, das verwendet wird, um den vorhergehenden Prozess in den Hintergrund zu rücken.

Ohne das aufgerufene Programm zu kennen, weiß ich nicht direkt, warum es auf diese Weise ausgeführt werden muss.


</dev/null trennt die Eingabe des Programms vom Terminal. Einige Programme reagieren unterschiedlich, je nachdem, womit ihr Standardeingang verbunden ist. Mit der Umleitung </dev/null , kann das Programm feststellen, dass seine Eingabe nicht von einem Terminal kommt, und erhält sofort eine End-of-File-Anzeige, wenn es versucht, von seiner Standardeingabe zu lesen.

Der einsame & am Ende bewirkt, dass das Programm im Hintergrund ausgeführt wird. Das bedeutet, dass Sie sofort einen Shell-Prompt zurückbekommen. Ohne die & , würden Sie nur dann einen Shell-Prompt zurückbekommen, wenn die Ausführung des Programms beendet ist.

Beachten Sie, dass der eigenständige & hat nichts mit >& zu tun . >& ist ein Umleitungsoperator (in tcsh, bash und zsh), der sowohl die Standardausgabe des Programms als auch den Standardfehler des Programms auf den hinter dem Operator angegebenen Dateinamen umleitet (hier log ).

Mit anderen Worten, was die Shell tut, wenn sie diese Befehlszeile sieht, ist:

  • Starten Sie einen Prozess im Hintergrund. Im Hintergrundprozess:
    • Standardeingang mit /dev/null verbinden (das Nullgerät).
    • Verbinden Sie sowohl die Standardausgabe als auch den Standardfehler mit der Datei namens log (Erstellen der Datei, wenn sie noch nicht existiert, und Abschneiden, wenn sie existiert).
    • Suchen Sie nach einer ausführbaren Datei namens java im $PATH .
    • Führen Sie diese Datei mit den 5 Argumenten -cp aus , /home/weka.jar , weka.classifiers.trees.J48 , –t , train_file`.

Linux
  1. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

  2. Wann sollte /dev/random vs. /dev/urandom verwendet werden?

  3. Wie man einen Cronjob komplett zum Schweigen bringt /dev/null/?

  4. Simulieren Sie eine leere Standardeinstellung für einen getrennten Befehl?

  5. Linux – Was bedeutet der Buchstabe „u“ in /dev/urandom?

Wie portabel sind /dev/stdin, /dev/stdout und /dev/stderr?

Was sind /dev/zero- und /dev/null-Dateien in Linux

Was macht die Zeile '!/bin/sh -e'?

DD von /dev/zero nach /dev/null ... was eigentlich passiert

echo oder print /dev/stdin /dev/stdout /dev/stderr

Erstellen Sie ein virtuelles Blockgerät, das in /dev/null schreibt