Die Verlaufsdatei wächst unbegrenzt

767
Davide

Ich glaube, ich habe das gleiche Problem wie dieser Kerl . Ich bin auf AIX, mit tcsh 6.12.00

Nach (wahrscheinlich) einem schlechten Logout ist die Verlaufsdatei exponentiell gewachsen, bis das Kontingent angehalten wurde (und als das Kontingent erreicht wurde, traten mehrere Probleme mit Stapeljobs auf, die aus diesem Grund nicht ausgeführt werden konnten). Der Inhalt der History-Datei war nur:

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

für immer und ewig wiederholt (tatsächlich ~ 50 Millionen mal). Beachten Sie, dass

host: path > 

ist eigentlich die Aufforderung (die ich ein bisschen verschleiert habe, um Spammer zu vermeiden).

Nun sind zwei (möglicherweise getrennte) Probleme aufgetreten:

  1. warum diese Ausgabe in die .history-Datei ging (stattdessen mein -say- mein Bildschirm, wenn ich den Vorgang beendet habe)
  2. warum das savehist-Limit nicht durchgesetzt wurde (es waren 5000, sollte also nie 9917 erreichen)

Das einzige, was ich denken kann, ist von einem Prozess, dessen stdout (oder err) dort umgeleitet wurde, aber das ist wirklich seltsam! Hast du eine Ahnung von diesem Problem?

Leider kann ich das Problem nicht nach Belieben reproduzieren, was das Debuggen erleichtern würde.

BEARBEITEN: Ja, dies geschah mit einem Remote-Login (SSH), das von einem X-Terminal-Emulator in Linux ausgeführt wurde (der Remote- Computer ist AIX, der lokale Linux-Server).

EDIT: Das einzige, was ich denken kann, ist ein Fehler in tcsh, der im Falle von etwas "Schlechtem" der tty irrtümlicherweise den .history-Dateideskriptor verwendet, der offen sein sollte, um nur die Historie zu aktualisieren. Ist es aber so? Es ist alles nicht erwähnt hier

1

1 Antwort auf die Frage

1
Jack Lloyd

Keine eindeutigen Antworten, aber ein paar zufällige Ideen, die helfen können oder nicht:

Der Ausdruck "Abmelden" zum Abmelden verwenden. " klingt sehr nach tcsh, das einen EOF (^ D) -Zeichen hat und es nicht mochte, stattdessen 'logout' einzugeben. Woher kamen also all diese (hypothetischen) EOFs?

Sind Sie wie die Person, die in Cygwin ein Problem damit hat, die Shell über einen Emulator mit X-Terminal (xterm, rxvt, was auch immer)? Ich frage mich, ob der Terminal-Emulator geschlossen wird, wodurch die vom Shell-Prozess verbundenen ptys geschlossen werden, wodurch die Shell eine endlose Reihe von EOF-Zeichen liest und sich dann in die Unendlichkeit dreht. Vielleicht gibt es hier eine Art Rennen, bei dem das Term-Fenster geschlossen wird, bevor die Shell tatsächlich darüber informiert wird, dass die Sitzung abgeschlossen ist?

Versuchen Sie zum Beispiel, a) herauszufinden, ob a) Tcsh in Ihrer Konfiguration EOF für das Abmelden tatsächlich akzeptiert (oder ablehnt), und b) wenn Sie dies ablehnen.

Ich weiß, dass dies bestenfalls spekulativ ist, ich verwende kein tcsh und meine Kenntnisse über X-Interna und tty-Emulation sind (zum Glück für meinen Verstand) eher gering. Aber ein Szenario wie dieses erscheint ohnehin plausibel.

Vielen Dank für Ihre Antwort (Ich habe meine Frage mit Details zu Ihren Kommentaren bearbeitet). Ich hatte schon so etwas vermutet, aber das erklärt meine oben stehenden Punkte 1 und 2 nicht. Ich versuche es, aber da ich das Problem nicht reproduzieren kann, kann ich nicht sicher sein, ob ich das Problem gelöst habe. Davide vor 15 Jahren 0