たとえば、 ping 8.8.8.8&
と入力すると 、なぜpingプロセスが機能しているのを確認できますか?そして、 find / -name'* test *'&
と入力すると 、モニターにも表示されます。
何故ですか?本当にバックグラウンドではありませんか?
ベストアンサー
&コード> コマンドをバックグラウンドで実行するようにシェルに指示します。つまり、コマンドはフォークされ、ジョブとして非同期で別のサブシェルで実行されます。
&
を置くときは注意してください 出力–stdoutとstderrの両方 –引き続き画面に印刷されます 。画面に出力を表示したくない場合は、両方の stdout
をリダイレクトします およびstderr
次の方法でファイルに追加:
myscript > ~/myscript.log 2>&1 &
通常、 stderr
を破棄することをお勧めします / dev / null
にリダイレクトします 後でエラーを分析する必要がない場合。
別々のサブシェルで、コマンド/スクリプトを同時に実行することもできます。たとえば;
./script1 & ./script2 & ./script3 &
コマンドを終了する前に、バックグラウンドジョブをコマンドラインに戻すことができます:
fg <job-number>
job-number
実行することで取得できます
jobs