
Wir verwenden CentOS 6.9 und bei einem meiner Benutzer ist ein Fehler aufgetreten, bei dem der Bildschirm beim Anmelden eingefroren wird, bis er Strg+C drückt. Dasselbe passiert beim Beenden. Es passiert auch, wenn ich Root bin und su als problematischer Benutzer verwende. Der Benutzer verwendet tcsh, aber ich habe noch keinen anderen Benutzer mit tcsh gesehen, der dieses Problem hat.
[root@boop] # su - troublesome_user
(hangs until terminate)
^C[troublesome_user@boop ~]$ exit
logout
(hangs until terminate)
^C [root@boop] #
Ich bin mit Bash am besten vertraut, also habe ich nach .bash_profile und .bash_rc gesucht, aber ich weiß jetzt, dass tcsh einen anderen Satz von .profile-Dateien verwendet. Ich habe mir ihre .cshrc-Dateien angesehen und nichts Seltsames bemerkt.
Hier ist der Inhalt:
setenv LC_ALL C
set path = ($path /nfs/bin)
Hat jemand eine Ahnung, ob es eine Funktion von tcsh gibt, die dies verursachen könnte?
Danke!
Antwort1
Als Erstes würde ich alle Speicherorte überprüfen, von denen aus tcsh beim Start Befehle ausführt.
Dermanpagehat folgendes zu sagen (ich habe die Dateispeicherorte fett markiert):
Eine Login-Shell beginnt mit der Ausführung von Befehlen aus den Systemdateien/etc/csh.cshrcUnd/etc/csh.login. Anschließend werden Befehle aus Dateien im Home-Verzeichnis des Benutzers ausgeführt: zuerst~/.tcshrc(+) oder, wenn ~/.tcshrc nicht gefunden wird,~/.cshrc, Dann~/.Geschichte(oder der Wert desHistfile-Shell-Variable), Dann~/.login, und schlussendlich~/.cshdirs(oder der Wert desDirsfile-Shell-Variable) (+). Die Shell kann /etc/csh.login vor statt nach /etc/csh.cshrc und ~/.login vor statt nach ~/.tcshrc oder ~/.cshrc und ~/.history lesen, wenn sie so kompiliert wurde; siehe die Shell-Variable „Version“. (+)
Wenn das nicht weiterhilft, würde ich folgende zwei Dinge versuchen:
- Melden Sie sich als der fehlerhafte Benutzer an, lassen Sie es hängen, wechseln Sie zu einer anderen Konsole und überprüfen Sie es.
w
So sollten Sie sehen, was dieser Benutzer ausführt. Ctrl+Z
stattCtrl+C
- das sollte den laufenden Prozess anhalten, statt ihn zu unterbrechen. Dannjobs
sehen Sie, was angehalten wurde.
EDIT: Wie JdeBP in den Kommentaren anmerkte, könnten Sie die Optionen -x
und auch -V
in su auf tcsh setzen – obwohl ich glaube, dass Sie das Problem mit finden könnten -X
. Etwa so:
su - troublesome_user -- -X
- -x gibt alle Befehle vor der Ausführung aus
- Die Eingabe des Befehls -v wird nach der Ersetzung des Verlaufs wiederholt.
- -X, dasselbe wie -x, gilt aber bereits vor der Verarbeitung von .tcshrc
- -V, dasselbe wie -v, gilt aber bereits bevor .tcshrc verarbeitet wird