特定のサーバーにログインすると、次のように表示されます。
Last login: ...
情報を取得しますが、プロンプトは表示されないことに注意してください。 Ctrl+C
を押して、その後だけプロンプトが表示されるので、以下のスクリーンショットのように、ユーザー名とパスワードが正しいことを証明します。
私は今朝からオフィスにあるWebサーバーでこの問題を抱えています。マシンのディスクが今日交換されたのは偶然ではありませんが、起こったのは古いディスクのクローンが作成され、システムの他のすべてのユーザーがこの問題を抱えていないことだけです。
誰かが何が起こっているのか知っていますか?
シェル初期化ファイルの1つで何かに時間がかかっています。ログインシェルがbashの場合はset -x
または~/.bash_profile
(または~/.profile
)の先頭に~/.bash_login
を追加するか、~/.zprofile
および~/.zlogin
および~/.zshrc
zshの場合。このようにして、シェルは実行する前に各コマンドを出力します。その後、set +x
を実行して、トレースをオフにします。
コマンドは、システム全体の初期化スクリプト/etc/profile
から呼び出されるコマンドである可能性があります。そのファイルを変更できないが、その機能を確認する必要がある場合は、トレースをオンにしてログインシェルを実行します。 bash --login -x
。
もう1つのアプローチは、もう一度ログインして、ps
やその他のツールで何が起こっているかを監視することです。 Linuxの場合、ps x
はすべてのプロセスを表示します(プレーンなps
は現在のターミナルで実行されていることのみを示し、ここでは役に立ちません)。 ps -t pts/42
は、端末/dev/pts/42
で実行されているプロセスに制限します(2番目のセッションの端末を判別するには、最初にps x
を実行する必要があります)。
シェルをハングさせているプロセスを強制終了する代わりに、Ctrl + Zでシェルを停止してから、jobs
コマンドを使用してシェルが何であるかを確認してください。
$ HOME/.bashrc、$ HOME/.profileのいずれかで実行されているコマンドが、正しくバックグラウンド化されていないか、ユーザーからの入力を待っている可能性があります。まず、これら2つのファイルを見てみましょう。
そこに何も表示されない場合は、これらのファイル、/ etc/bashrc、/ etc/profile、およびディレクトリ/etc/profile.d/*内のファイルに相当するシステムを調べます。おそらく、sysadminである誰かが、ログイン時に実行しようとしているシステムレベルのファイルに何かを追加しました。