回答:
&非同期に、ジョブとしてバックグラウンドでコマンドを実行するためのシェル、すなわち、それはフォークと別々のサブシェルで実行されたが、指示します。
あなたが置くときことに注意してください&両方-出力stdoutとstderrを -まだされ、スクリーン上に印刷。あなたは、画面上の任意の出力を表示したくない場合は、両方をリダイレクトするstdoutとstderrしてファイルへ:
myscript > ~/myscript.log 2>&1 &
通常、エラーを後で分析する必要がない場合はstderr、リダイレクトして破棄する/dev/nullことができます。
別のサブシェルでコマンド/スクリプトを同時に実行することもできます。例えば;
./script1 & ./script2 & ./script3 &
バックグラウンドジョブは、コマンドで終了する前にコマンドラインに戻すことができます。
fg <job-number>
をjob-number実行すると取得できます
jobs
2>&1リダイレクトstderrしstdoutます。
stty tostopターミナルへの書き込みを試みると、バックグラウンドジョブが中断されることに言及する価値があると思います。
を使用する&と、プロセスはバックグラウンドで実行されます。しかし、その標準出力はまだ端末です。
実際には、あなたが実行することping 8.8.8.8 &とfind / -name '*test*' &同時に(混合出力が得られる)、しかし、あなたは実行されないことping 8.8.8.8とfind / -name '*test*'同じシェル上で同時に。
何も表示したくない場合は、などを使用しますping 8.8.8.8 &> /dev/null &。
また、あなたが学びたいことnohupやdisown。
disown出力が端末に出力されるのを妨げません。
/dev/null出力をどこかに保存せずに破棄したい場合は、端末出力をリダイレクトするファイルとして使用できることを含めることができます。そして、私はそれが2>&1リダイレクトさstderrれるのは正しいstdoutですか?たぶんあなたもそれを明確にしたい...ありがとう。