履歴ファイルが無限に大きくなる


1

私は私がと同じ問題を抱えていると思います この男 。私はAIX上にいます、tcsh 6.12.00

(おそらく)ログアウトが悪くなった後、履歴ファイルは、クォータがそれを停止するまで指数関数的に大きくなりました(そしてクォータに達すると、そのために実行できなかった他のいくつかの問題がバッチジョブで発生しました)。履歴ファイルの内容は次のとおりです。

 9917 host: path > 
    Use "logout" to logout.

永遠に繰り返される(実際には〜5000万回)。ご了承ください

host: path >

実際にはプロンプトです(私はスパマーを避けるために少し分かりにくくしました)。

今、2つの(別々の可能性のある)問題が起こりました:

  1. その出力が.historyファイルに出力された理由
  2. なぜsavehistの制限が強制されなかったのか(5000だったので9917には達しないはずです)

私が考えることができる唯一のものは、標準出力(またはエラー)がそこにリダイレクトされたプロセスですが、これは本当に奇妙です!この問題について何か手がかりがありますか。

残念ながら、私は自由に問題を再現することができず、デバッグに役立ちます。

編集:はいこれはLinuxのX端末エミュレータから行われたリモート(SSH)ログインで起こった( 遠い マシンはAIXです。 地元 linux)

編集:私が考えることができる唯一のものはtcshのバグです、それはttyに何か「悪い」が起こった場合に誤って.historyファイル記述子を使用します。しかしそうですか?何も言及されていません ここに

回答:


1

ここでは明確な答えはありませんが、役に立つかどうかわからない、ランダムなアイデアをいくつか選びます。

ログアウトするには、「Use "logout"」というフレーズ。 tcshがEOF(^ D)文字を取得したのに嫌いなので、代わりに 'logout'を入力するように求められます。それでは、これらすべての(仮想の)EOFはどこから来たのでしょうか。

あなたは、Cygwinでこれに問題を抱えている人のように、何らかのX端末エミュレータ(xterm、rxvtなど)を介してシェルを使用していますか?端末エミュレータが閉じてシェルプロセスが接続しているptysを閉じ、それによってシェルが無限のEOF文字列を読み取って無限大になってしまうのではないかと思います。セッションが完了したことを実際にシェルに通知する前に、ウィンドウという用語が店を閉じるという、ある種の人種があるかもしれません。

試してみるべきことの1つは、a)設定内のtcshが実際にログアウト用のEOFを受け入れる(または拒否する)場合、およびb)拒否する場合はそれを許可するための切り替えを考えることです。

私はこれがせいぜい投機的であることを知っています、私はtcshを使いません、そしてX内部およびttyエミュレーションに関する私の知識は(私の正気のためにありがたいことに)かなり最小限です。しかし、このようなシナリオはとにかくもっともらしいようです。


あなたの答えてくれてありがとう(私はあなたのコメントについての詳細で私の質問を編集しました)。私はすでにそのようなことを疑っていましたが、これは私の論点1を説明するものではありません。上記2試してみるつもりですが、問題を再現できないため、問題が解決したかどうかわかりません。
Davide
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.