回答:
遅すぎる。後工程が開始されると、シェルはにはより多くの制御がないプロセスのあなたがすることはできませんので、ファイルディスクリプタ沈黙シェルコマンドでそれを。
あなたはプロセスを殺すことSIGHUP
を試みることができるだけです。プロセスがそれを正しく処理すれば、ttyの制御から切り離されるはずです。不運にも、多くのソフトウェアはそれを正しく処理せず、単に死んでしまいます。
SIGSTOP
のプロセスに(またはあなたが言うように、Ctrl + Zをやって)プロセスを沈黙しません。プロセスを停止します!
端末から実行されるプロセスには、その端末にstdin、stdout、およびstderrがバインドされており、その端末の制御を取り戻すことなく、それについて何も実行できません...通常は。しかし、実際にそれを可能にするいくつかのトリッキーなツールがあります。この例を見てください。そしてretty
そこで言及されているような他のプログラム。
出力を沈黙させるには遅すぎるとandcozに同意しません。
プロセスがフォアグラウンドで実行されていると仮定して、プロセスCtrl-Z
を一時停止するために使用します。これにより、ジョブ番号とプロセスIDが報告されます。bg %1
(ジョブ#1の場合)を使用して、プロセスをバックグラウンドに移動できます。これによりプロセスがバックグラウンドに移動しますが、出力は無音になりません。出力を消音にするには、gdb
すべての出力をにリダイレクトするために使用できます/dev/null
。
これは以前/programming/593724/redirect-stderr-stdout-of-a-process-after-its-been-started-using-command-lin/593764#593764で非常にうまく説明されています。
さらに別のコマンドラインツールはdetach
です。最新バージョンは、pidfileの書き込み、stdin、stdout、stderrのファイルの使用、およびフォアグラウンドでの実行をサポートしています。(のWebサイトでdetach
も同様のツールについて説明しています。)