「</ dev / null」とはどういう意味ですか?


16

ブラックホールのように振る舞う> /dev/nullものをリダイレクトすることを理解して/dev/nullいます。しかし、私は何を< /dev/null意味するのか理解していません。私はこのように書かれたスクリプトを見ました:

nohup myprogram > foo.out 2> foo.err < /dev/null &

それでは、< /dev/null上記のコードでは何を意味するのでしょうか?

ここに提案されているがあります


回答:


19

これにより、すべてのI / Oストリームが考慮/占有されます。

このように、バックグラウンドプロセスはターミナルに「結び付けられる」ものがないため、プログラムがTTYから読み取ろうとせずにビジネスを進めることができ、ターミナルがハングします。

この場合、シェルスクリプトからsshを介してプロセスを起動するので、スクリプトが邪魔されずに移動できることを確認しています。


myprogramが何らかの入力を受け取ると仮定しますが、この場合、myprogramに入力として何もフィードしませんか?
銭チェン

ありがとう。を除く残りのすべてを理解してい< /dev/nullます。
銭チェン

では、コードと同じコードの違いは何< /dev/nullですか?
銭チェン

:私は実際にここからのコードの読み取りstackoverflow.com/questions/29142/...
銭チェン

2
助けてくれてうれしい!回り込みについてごめんなさい。コンテキストは助けてくれました、ありがとう!-サイド注:私は今、物事が釘付けされていること、それはちょうどそれを見て、誰のために混乱に見えますが、1,2分で私のコメントの束を削除するつもりだ
user3276552

12

program </dev/nullは、programファイル記述子0(STDIN)を介してfileから入力引数(オプションへの入力パラメーターにすることも、操作する入力ファイルにすることもできます)を取っていることを意味します/dev/null

ご存じのとおり、/dev/null何も含まれていないため、読み取り時にEOF(ファイルの終わり)を通知するため、入力を受け取るプログラム/dev/nullは基本的に入力引数として何もリダイレクトしません。


< /dev/null除外するだけの違いはありますか?同じようにそれを書くnohup myprogram > foo.out 2> foo.err &
銭チェン

1
@ElgsQianChenそれはあなたに依存しprogramます。一部のプログラムは、あなたがSTDINとして何かを置く必要があるので、これはあなただけで使用することをここにケースであるかもしれないことが必須となるかもしれない/dev/nullSTDINとして、プログラムを聞かせて処理を行うと、ファイルにSTDOUTとSTDERRを置く。..言及
heemayl

それで、入力がプロセスをブロックするのを効果的に防ぎ、入力要求に何もフィードしませんか?
銭チェン

1
@ElgsQianChenファイル記述子0、つまりSTDINをブロックするので、それを介してこれ以上入力を渡すことはできません。
heemayl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.