私はブラックホールのような場所> /dev/null
に物事をリダイレクトすることを理解しています。/dev/null
しかし、私は< /dev/null
それが何を意味するのか理解していません。私は次のように書かれたいくつかのスクリプトを見たことがあります。
nohup myprogram > foo.out 2> foo.err < /dev/null &
それでは、< /dev/null
上記のコードの意味は何ですか?
これははい提案はどこにありますか?
答え1
すべてのI / Oストリームが占有/占有されていることを確認してください。
これにより、バックグラウンドプロセスが端末のどの項目にも「接続」されないため、プログラムはTTYからデータを読み取ろうとし、端末が中断されることなく作業を実行できます。
この場合、シェルスクリプトはsshを介してプロセスを起動し、スクリプトが邪魔にならずに実行されていることを確認できます。
答え2
program </dev/null
program
入力パラメータ(オプションの入力パラメータまたは作業する入力ファイル)がファイル記述子0(STDINなど)を介してファイルから取得されていることを意味します/dev/null
。
ご存知のように、/dev/null
何も含まず、読み取るときにEOF(ファイルの終わり)を通知するので、入力を受け取るプログラムはデフォルトで/dev/null
何も入力引数にリダイレクトしません。