Ich verstehe, > /dev/null
leitet Dinge weiter, /dev/null
die wie ein Schwarzes Loch wirken. Ich verstehe jedoch nicht, was das < /dev/null
bedeutet. Ich habe folgendes Skript gesehen:
nohup myprogram > foo.out 2> foo.err < /dev/null &
Was bedeutet < /dev/null
der obige Code?
Hier ist ein Beispiel, in dem es vorgeschlagen wird
<&-
do?Antworten:
Es stellt sicher, dass alle E / A-Datenströme berücksichtigt / belegt werden.
Auf diese Weise ist der Hintergrundprozess nicht an das Terminal "gebunden", sodass Sie Ihren Geschäften nachgehen können, ohne dass Ihr Programm versucht, von TTY zu lesen, was zum Absturz des Terminals führen würde.
Da Sie in diesem Fall den Prozess über ssh von einem Shell-Skript aus starten, müssen Sie sicherstellen, dass das Skript unbelastet ausgeführt werden kann.
quelle
< /dev/null
.< /dev/null
?program </dev/null
bedeutet, dass dasprogram
Argument über den Dateideskriptor 0, dh STDIN, aus der Datei übernommen wird (kann ein Eingabeparameter für eine Option sein oder eine Eingabedatei sein, mit der gearbeitet werden soll)/dev/null
.Wie Sie bereits wissen,
/dev/null
enthält es nichts und benachrichtigt EOF (End of File) beim Lesen, sodass jedes Programm, das Eingaben von/dev/null
nimmt, im Grunde genommen nichts als Eingabeargument umleitet.quelle
< /dev/null
? Schreiben Sie es einfach alsnohup myprogram > foo.out 2> foo.err &
program
..was will es als STDIN? Einige Programme machen es möglicherweise obligatorisch, so dass Sie etwas als STDIN angeben müssen. Dies kann hier der Fall sein, dass Sie nur/dev/null
als STDIN verwendet haben und das Programm die Verarbeitung durchführen und STDOUT und STDERR in die genannten Dateien