アプリケーションの出力をバックグラウンドで/ dev / nullにリダイレクトする方法


100

Linuxのバックグラウンドアプリケーションから生成された出力を/ dev / nullにリダイレクトしたいと思います。

私はkateテキストエディタを使用しており、/ dev / nullにリダイレクトするすべてのデバッグメッセージをターミナルに出力します。

それを行う方法はありますか?

ありがとう


このページをご覧ください。xaprb.com/blog/2006/06/06/what-does-devnull-21-mean
richard.g

回答:


230

あなたが使う:

yourcommand  > /dev/null 2>&1

バックグラウンドで実行する必要がある場合は、 &

yourcommand > /dev/null 2>&1 &

>/dev/null 2>&1AND にリダイレクトstdoutし、その時点でポイントしている場所に/dev/nullstderrstdout

あなたstderrがコンソールで発生したい場合、あなただけにstdout行くこと/dev/nullができます:

yourcommand 2>&1 > /dev/null

この場合stderrにリダイレクトされるstdout(例えば、あなたのコンソール)と、その後、元はstdoutにリダイレクトされます/dev/null

プログラムが終了してはならない場合は、以下を使用できます。

nohup yourcommand &

パラメータを指定しないと、すべての出力がnohup.outに入ります。


どちらも機能しますが、多少の違いはありますが、覚えていません
evildead

ああ、それはそれを得て、他のバージョンを追加しました
evildead

これがbashファイルの最後のコマンドである場合、気付いたのは、ファイルを呼び出したコマンドコンソールがプロンプトなしで終了することです。
Dennis

経由でリダイレクトがあるため、すでに実行中のアプリケーションの出力をリダイレクトする@elig、その簡単芋は不可能である、または少なくともないdup2()直後に起こるfork()が、前にexec*()。いったんexec*()プログラムを実行すると、シェルにはそのプロセスの出力をリダイレクトする機能がなくなります。私が間違っている場合は修正してください。しかし、そのような機能を実装したシェルについては知りません。
evildead

3

これらはまた両方をリダイレクトします:

yourcommand  &> /dev/null

yourcommand  >& /dev/null

ただし、bashのマニュアルでは、1つ目が推奨されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.