Wenn ich mich bei einem bestimmten Server anmelde, sehe ich Folgendes:
Beachten Sie, dass ich Informationen erhalte Last login: ...
, aber keine Eingabeaufforderung. Ich drücke Ctrl+C
und nurDannerhalte ich meine Eingabeaufforderung und beweise damit, dass mein Benutzername und mein Passwort korrekt sind, wie im folgenden Screenshot dargestellt.
Ich habe dieses Problem seit heute Morgen auf einem Webserver, den wir im Büro haben. Es ist kein Zufall, dass die Festplatten in der Maschine heute ausgetauscht wurden, aber alles, was passiert ist, ist, dass die alte Festplatte geklont wurde und alle anderen Benutzer des Systems dieses Problem nicht haben.
Weiß jemand, was los sein könnte?
Antwort1
In einer Ihrer Shell-Initialisierungsdateien dauert etwas sehr lange. Fügen Sie set -x
am Anfang ~/.bash_profile
oder ~/.profile
(oder ~/.bash_login
) hinzu, wenn Ihre Login-Shell Bash ist, oder ~/.zprofile
und ~/.zlogin
und ~/.zshrc
, wenn es Zsh ist. Auf diese Weise druckt die Shell jeden Befehl aus, bevor sie ihn ausführt. Führen Sie es set +x
anschließend aus, um die Ablaufverfolgung zu deaktivieren.
Der Befehl kann einer sein, der vom systemweiten Initialisierungsskript aufgerufen wird /etc/profile
. Wenn Sie diese Datei nicht ändern können, aber sehen müssen, was sie tut, führen Sie eine Login-Shell mit aktivierter Ablaufverfolgung aus, z. B. bash --login -x
.
ps
Ein anderer Ansatz besteht darin, sich ein zweites Mal anzumelden und zu beobachten, was mit anderen Tools passiert . Unter Linux ps x
werden alle Ihre Prozesse angezeigt (eine einfache Option ps
zeigt nur die Prozesse an, die auf dem aktuellen Terminal ausgeführt werden, was hier nichts nützt); ps -t pts/42
beschränkt sich auf die Prozesse, die auf dem Terminal ausgeführt werden /dev/pts/42
(Sie müssen wahrscheinlich ps x
zuerst ausführen, um das Terminal der zweiten Sitzung zu bestimmen).
Antwort2
Anstatt den Prozess zu beenden, der Ihre Shell aufhängt, versuchen Sie, ihn mit Strg+Z zu stoppen, und verwenden Sie dann jobs
den Befehl, um zu sehen, was es war.
Antwort3
Höchstwahrscheinlich wird in Ihrem $HOME/.bashrc oder $HOME/.profile ein Befehl ausgeführt, der entweder nicht richtig im Hintergrund ausgeführt wird oder auf eine Benutzereingabe wartet. Ich würde mir zunächst diese beiden Dateien ansehen.
Wenn dort nichts herauskommt, würde ich mir die Systemäquivalente dieser Dateien ansehen, /etc/bashrc, /etc/profile und die Dateien im Verzeichnis /etc/profile.d/*. Vielleicht hat jemand, ein Systemadministrator, diesen Dateien auf Systemebene etwas hinzugefügt, das jetzt ausgeführt wird, wenn Sie sich anmelden.