コマンドラインでの</ dev / null&の使用法


12

次のコマンドラインを使用してサンプルJavaプログラムを実行しようとしました。しかし、私はトレーリングパートが何に< /dev/null &使用されているのか分かりませんか?

java   -cp  /home/weka.jar weka.classifiers.trees.J48 t train_file  >& log < /dev/null &

回答:


21

< /dev/nullEOFをプログラムに即座に送信するために使用され、入力を待機しません(/dev/nullnullデバイスは、書き込まれたすべてのデータを破棄する特別なファイルですが、書き込み操作が成功したことを報告し、データを提供しませんそこから読み取り、EOFを即座に生成するプロセス)。&前のプロセスの背景に使用される特殊なタイプのコマンドセパレーターです。

呼び出されるプログラムがわからないので、なぜこのように実行する必要があるのか​​は直接わかりません。


6

</dev/null端末からプログラムの入力を切断します。一部のプログラムは、標準入力が何に接続されているかによって、反応が異なります。redirectionを使用する</dev/nullと、プログラムは、その入力が端末からのものではないことを認識でき、標準入力から読み取ろうとすると、ファイルの終わりを示す通知をすぐに受け取ります。

&最後の孤独はプログラムをバックグラウンドで実行させます。つまり、シェルプロンプトがすぐに返されます。がないと&、プログラムの実行が終了したときにのみシェルプロンプトが返されます。

スタンドアロン&はとは無関係であることに注意してください>&>&プログラムの標準出力とプログラムの標準エラーの両方を、演算子の後ろに指定されたファイル名(ここではlog)にリダイレクトするリダイレクト演算子(tcsh、bash、zsh内)です。

つまり、このコマンドラインを確認したときにシェルが行うことは次のとおりです。

  • バックグラウンドでプロセスを開始します。バックグラウンドプロセス:
    • 標準入力を/dev/nullnullデバイス)に接続します。
    • 呼び出されたファイルに標準出力と標準エラーの両方を接続しますlog(ファイルがまだ存在しない場合は作成し、存在する場合は切り捨てます)。
    • で呼び出さjavaれた実行可能ファイルを探します$PATH
    • 5つの引数を指定して、そのファイルを実行し-cp/home/weka.jarweka.classifiers.trees.J48–t、train_file`。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.