実行中のプログラムの出力を/dev/nullにリダイレクトする方法

実行中のプログラムの出力を/dev/nullにリダイレクトする方法

プログラムの出力を抑制するために、プログラムを次にリダイレクトできることがわかります/dev/null。たとえば、Chromeからすべてのエラーメッセージと警告メッセージを非表示にするには、次のようにプログラムを起動できます。

chromium-browser 2> /dev/null &

ただし、エラーメッセージを忘れて入力した場合

chromium-browser &

(コマンドの途中に現れたらとても迷惑です。)アプリケーションを停止して正しく再起動する以外に何をすべきかわかりません。

アプリケーションを再起動せずにエラー出力をリダイレクトできますか?

答え1

これに対する答えは次のとおりです。ここ渡すブラデル。答えは(引用)です。

  • gdbを使用して問題のプロセスに接続し、次を実行します。
  • p dup2(open("/dev/null", 0), 1) (標準出力リダイレクトの場合)
  • p dup2(open("/dev/null", 0), 2) (標準エラーリダイレクトの場合)
  • 分離
  • 辞める

私は次のスクリプトを試しました。

[最初のコメント以降のバージョン:]

sleep 10 # だからプロセスに接続する時間があります
if [ "$sonorfather" == "father" ] # 無限再帰防止
それから
   sonorfather=son./test&
フィリピン諸島

本当ではありますが
する
   echo "stdout $sonorfather"
   echo "stderr $sonorfather" >&2
   睡眠1
完璧

子プロセスを作成する前にstderr出力を無効にしましたが、結果は次のようになります。

標準出力父
標準息子
標準出力父
標準息子
[など...]。

これがあなたの質問に答えることを願っています。子プロセス stderr もリダイレクトされます。

答え2

nohup を使用してブラウザを起動した後、次のコマンドを使用して端末ウィンドウを閉じることもできます。

nohup chromium-browser &

これにより、ブラウザが起動してコンソールから切り離され、静かに終了することがあります。

答え3

chromium-browser実行するエイリアスを設定することもできます。chromium-browser 2> /dev/null

たとえば、bashを使用している場合は、/home/username/.bashrcを編集して次の行を追加します。

chromium-browser='chromium-browser 2> /dev/null'

またはより良い

chrome='chromium-browser 2> /dev/null'

そして、いくつかのキーストロークを保存してください。

関連情報