it-mure.jp.net

bashコマンドが出力を返さないことがあるのはなぜですか?

Bashシェルでは、コマンド( "who"など)を実行すると、結果が表示されないことがよくありますが、次に他のコマンドを実行すると、前のコマンドの出力が含まれます。

例えば。:

> who 
> ls -l 
 u811217 pts/0 Jul 7 10:36(pcp830738pcs.ny.abc.com)
 f122260 pts/1 Jun 29 18:07(wnnypbh82bqjl1.ny.abc.com)
 hpmonpd pts/2 Jul 6 15:17(vsin0vw342.svr.us.abc.net)
合計10536 
- rwxr--rx 1 e252642 pbdvdp 75 Jul 6 12:26 runboth.sh 
-rwxr--rx 1 e252642 pbdvdp 19 Jul 6 12:28 runtop.sh 
-rwxr--rx 1 e252642 pbdvdp 108 Jul 6 12:29 runvmstat.sh 

最初は、ある種の「バッファをフラッシュしない」問題のように見えますが、結果が順不同で受信される場合があります。例:

> who 
> ls -l 
合計10536 
-rwxr--rx 1 e252642 pbdvdp 75 Jul 6 12:26 runboth.sh 
 -rwxr--rx 1 e252642 pbdvdp 19 Jul 6 12:28 runtop.sh 
-rwxr--rx 1 e252642 pbdvdp 108 Jul 6 12:29 runvmstat.sh 
 u811217 pts/0 Jul 7 10:36(pcp830738pcs.ny.abc.com)
 f122260 pts/1 Jun 29 18:07(wnnypbh82bqjl1.ny.abc.com)
 hpmonpd pts/2 Jul 6 15:17( vsin0vw342.svr.us.abc.net)

その他の興味深い注意事項は次のとおりです。

  • 'history'や 'dirs'などの組み込みのbashコマンドでこの動作を発生させることはできません。
  • 'ksh'を使用してこの動作を発生させることはできません。

この単純なケースを例として示します。この問題はファイルのリダイレクトなどで発生し、実行される重要なスクリプト内で発生すると大きな問題を引き起こします。

OSの詳細:redhat linux 2.6.9-67.0.4.ellargesmp

どんな助けや提案も大歓迎です。ありがとう。

6
Bruce

助けてくれてありがとう。原因は、スレッドのメモリリークが発生したプロセスであり、カウントが25,000以上に達したようです。この問題については非常に多くのことが奇妙なので、どこから始めればよいのかわかりません。例えば「ksh」は正常に機能しました...

とにかく、パッチがリリースされ、スレッド数は数百に戻り、これまでのところ奇妙な動作はありません。

ありがとう、ブルース

1
Bruce