タグ付けされた質問 「stderr」

標準エラーは、プログラムがエラーメッセージや診断を出力するために通常使用するもう1つの出力ストリームです。

5
進捗レポート/ログ情報はstderrまたはstdoutに属しますか?
進捗レポートとログ情報(「Doing foo; foo done」など)を印刷する場所に関する公式のPOSIX、GNU、またはその他のガイドラインはありますか?個人的には、標準エラー出力にリダイレクトして、プログラムの実際の出力のみを取得できるように、標準エラー出力に書き込む傾向があります。最近、進捗レポートは実際にはエラーではなく、エラーメッセージのみがstderrに出力されるため、これは良い方法ではないと言われました。 両方のポジションが理にかなっており、もちろん、あなたがしていることの詳細に応じてどちらかを選択することができますが、これについて一般的に受け入れられている標準があるかどうか知りたいです。POSIX、GNUコーディング標準、またはその他の広く受け入れられているベストプラクティスのリストに特定のルールを見つけることができませんでした。 同様の質問がいくつかありますが、これらは正確な問題に対処していません。 シェルスクリプトでstderrへのリダイレクトを使用する場合:受け入れられた答えは、私がする傾向があることを示唆しています。ただし、これはユーザーの意見として提示されていますが、引数によってサポートされています。 使用法メッセージはstderrまたはstdoutに送信する必要がありますか?:これはヘルプメッセージに固有ですが、GNUコーディング標準を引用しています。これは私が探している種類のもので、ヘルプメッセージだけに制限されていません。 それでは、進捗レポートやその他の情報メッセージ(プログラムの実際の出力の一部ではない)を印刷する場所に関する公式ルールはありますか?
75 posix  stdout  gnu  stderr  standard 

6
STDERRとSTDOUTを異なる色で印刷するようにシェルを構成できますか?
端末を設定したいのでstderr、とは異なる色で印刷されstdoutます。たぶん赤。これにより、2つを区別しやすくなります。 これを設定する方法はあります.bashrcか?そうでない場合、これも可能ですか? 注:この質問はと合併した他を求めているstderr、stdout とユーザー入力のエコーで出力されるように3色展開。回答はどちらの質問にも対応している可能性があります。

2
bashスクリプトでstderrメッセージを抑制します
次の(少し馬鹿げた)スクリプト名 'test1.sh'を検討してください。 #/bin/bash # sleep 10 & echo sleep pid = $! pkill sleep 実行すると、エコーの出力だけでなく、stderrでのスリープの終了に関するbashのレポートも取得されます。 $ ./test1.sh sleep pid = 3551 ./test1.sh: line 5: 3551 Terminated sleep 10 この場合、stderrへの印刷を抑制したいと思います。次のように、コマンドラインで実行できることを知っています。 $ ./test1.sh 2> /dev/null ...しかし、スクリプト内からそれを抑制する方法はありますか?(私はそれを2番目のスクリプトでラップしてラッパーにリダイレクトさせることができることを知っていますが、もっと簡単なものが必要です...)


4
Xアプリケーションは、stderrで「アクセシビリティバスに接続できませんでした:」と警告します
正常に実行されているように見えても、端末からのすべてのアプリケーションが警告とエラーメッセージを出すようです。 Emacs: ** (emacs:5004): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-xxfluS2Izg: Connection refused エビンス: ** (evince:5052): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-xxfluS2Izg: Connection refused (evince:4985): Gtk-CRITICAL **: gtk_widget_show: assertion 'GTK_IS_WIDGET (widget)' failed (evince:4985): Gtk-CRITICAL **: gtk_widget_show: assertion …
30 terminal  x11  gtk  stderr  bugs 

3
ファイル記述子のコピーなしでstdoutとstderrを同じファイルにリダイレクトするのは安全ですか?
空のディレクトリから始めます。 $ touch aFile $ ls aFile 次にls、2つの引数があり、そのうちの1つはこのディレクトリにありません。両方の出力ストリームをという名前のファイルにリダイレクトしますoutput。私が使う>>同時に書くことを避けるためします。 $ ls aFile not_exist >>output 2>>output $ cat output ls: cannot access 'not_exist': No such file or directory aFile うまくいくようです。このアプローチには危険がありますか?

3
nohup:入力を無視し、stderrをstdoutにリダイレクトする
nohup以下のように使用して、バックグラウンドでアプリケーションを開始しています- root@phx5qa01c:/bezook# nohup java -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname phx5qa01c.phx.qa.host.com > exhibitor.out & [1] 30781 root@phx5qa01c:/bezook# nohup: ignoring input and redirecting stderr to stdout しかし、私はこのメッセージを見るたびに- nohup: ignoring input and redirecting stderr to stdout このメッセージが表示された場合、問題はありますか?それはどういう意味ですか、どうすれば回避できますか?


2
「セグメンテーション違反」メッセージはSTDERRの下にありますか?
で実行可能ファイルを実行しました bash ./code > log すべてのprintfステートメントがログファイルに記録されるのに対し、ターミナルには時折エラーメッセージが表示されます。以下のように再実行します ./code >& log 現在、時折発生するエラーメッセージもログに記録されます。ただし、セグメンテーションフォールトがある場合、端末には引き続き表示されます。どうして?メッセージをSegmentation fault (core dumped)ログファイルに記録する方法は? user $ bash --version GNU bash、バージョン4.2.24(1)-release(i686-pc-linux-gnu)

3
シェルスクリプトでstderrへのリダイレクトを使用する場合
grepのような行儀の良いユーティリティは、stdoutに「通常の」メッセージを、stderrにエラーメッセージを出力することを知っています。 $ grep '^foo' file1 file2 file1:foo grep: file2: No such file or directory シェルスクリプトを自分で書いているとき、stderrにどの出力とメッセージを表示するか、または気にする必要があるかどうかを判断するのが難しいことがよくあります。 私は良い習慣について知りたいです:いつメッセージをstderrにリダイレクトするのが適切であり、そうでないのか? 「依存します」は確かですが、これらの決定を下すのに役立つ洞察はありますか? この主観的な質問を形式に合うようにするために、「なぜ」に対処し、経験と可能であれば事実に裏打ちされた情報が得られる答えを奨励したいと思います。

1
stderrまたはstdoutにないコマンドの出力
私はこの問題につまずいたので、これがどのように可能か疑問に思っていますか? コマンドの標準実行: # zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 info from server: "Processed 0 Failed 1 Total 1 Seconds spent 0.000017" sent: 1; skipped: 0; total: 1 OK、最初の行のみを取得してみましょう。 # zabbix_sender -c zabbix_agentd.conf -k mmysql.QCInserts -o 14 | head -1 sent: 1; skipped: 0; total: 1 標準ヘッドはどうですか? # zabbix_sender -c …
15 shell  stdout  stderr 

2
stdout / stderrのインターリーブを妨げるものは何ですか?
いくつかのプロセスを実行するとします。 #!/usr/bin/env bash foo & bar & baz & wait; 上記のスクリプトを次のように実行します。 foobarbaz | cat 私の知る限り、プロセスのいずれかがstdout / stderrに書き込むとき、それらの出力はインターリーブしません-stdioの各行はアトミックであるようです。それはどのように機能しますか?各行のアトミック性を制御するユーティリティは何ですか?
13 shell  osx  stdout  output  stderr 

2
警告またはエラーが発生したときにプログラムの名前を出力する必要がありますか?
スクリプトまたはプログラムを作成している場合、警告またはエラーメッセージとともにその名前をstderrに出力する必要がありますか?例えば: ./script.sh: Warning! Variable "var" lowered down to 10. または: ./prog.py: Error! No such file: "file.cfg". 一般的にそれは単なる好みの問題であることを理解しています(特に自分用に自分のものを書く場合)が、それに対して慣習的なものはあるのだろうか?ほとんどのUNIX / Linuxユーティリティは何かが起こったときに名前を書くと思うので、それは良いことのように思えますが、それを行う方法としない方法についてのガイドラインや暗黙のルールはありますか? 例えば、それは下のバイナリをインストールすることをお勧めではありません/usr/bin/、むしろ下、/usr/local/bin/または何か他のもの。stderrへの出力について同様のルールはありますか?名前の後にコロンを書く必要がありますか?または単に「警告!」および「エラー!」言葉?何も見つかりませんでしたが、誰かがそれについてどこで読むかを教えてくれるかもしれません。 この質問はプログラミングの実践に関するものですが、UNIX / Linuxの伝統に関するものであり、一般的なプログラミングではないため、stackoverflowよりもこちらの方が適切だと思いました。

2
読み取りと書き込みの両方にstderrを使用する方法(およびその理由)
よるシリーによってこの答え、lessそれは開くことができない場合は標準エラー出力からのナビゲーションコマンドを読み込みます/dev/tty。 他のプログラムのstderrストリームに書き込むものを見たことがないので、これは不可解なように見えます。 stderrが読み取りと書き込みの両方に対してオープンであることの目的は何ですか?そして、これが便利な場合、現代のシステムでどのように利用するのですか?(たとえば、stdinの代わりにstderrに何かをパイプする難解な構文はありますか?)
12 pipe  stderr 

1
同じコマンドを発行すると、pts / gnome-terminalよりもttyでより多くの出力が作成されるのはなぜですか?
gnome-terminal: $ sudo update-grub [sudo] password for user: Generating grub configuration file ... Found background image: .background_cache.png Found linux image: /boot/vmlinuz-3.16.0-4-amd64 Found initrd image: /boot/initrd.img-3.16.0-4-amd64 done Ctrl+ Alt+ によってアクセスされるtty1 F1: $ sudo update-grub [sudo] password for user: Generating grub configuration file ... Found background image: .background_cache.png Found linux image: /boot/vmlinuz-3.16.0-4-amd64 …

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