web-dev-qa-db-ja.com

bgの後でコマンドからの出力を停止することは可能ですか?

この状況を想定します

wget http://file 

wgetがファイルのダウンロードを開始します。

バックグラウンドに入れました。

^Z
bg

コマンドはバックグラウンドになります。

しかし、その出力はまだコンソールにあります-コンソールがまだ開いている場合。

コマンドの出力を停止することは可能ですか?

Wgetは単なる例です。大量の出力を書き込むコマンドについて考えます。

コンソールで、bgを実行して端末を閉じて別の端末を開くことができることはわかっていますが、使用可能な端末が1つだけで、疑似端末がない場合はどうなりますか?

8
elbarna

コマンドの実行中にコマンドの出力を実際にリダイレクトするソリューションは次のとおりです: https://superuser.com/questions/732503/ redirect-stdout-stderr-of-a-background-job-from-console-to-a-log-file

端末を使用する日常のシナリオでより使いやすいソリューションの場合は、wget -o log http://file &wgetをバックグラウンドで実行し、その出力を端末ではなくlogに書き込みます。もちろん、この場合(フォアグラウンドでwgetを実行した場合でも)出力はまったく表示されませんが、tail -f log成長に合わせて出力を確認します。

2
PawkyPenguin

コンソールにメッセージを出力せずにwget(またはその他のcmd)をバックグラウンドで実行し続けたいという意味ですか?それが問題である場合、redirectionを試すことができます

$ wget http://file > /dev/null

上記のコマンドはstdout/dev/nullにリダイレクトし、エラーメッセージ以外のメッセージは表示されません。エラーメッセージも表示したくない場合は、これを試してください

$ wget http://file 1>/dev/null 2>&1

より詳細な情報については、Google redirectionを使用できます。

2
Charles