プロンプトが表示される前に、どのようなプロセスが実行されていますか?

プロンプトが表示される前に、どのようなプロセスが実行されていますか?

特定のサーバーにログインすると、次のように表示されます。

Ctrl+Cの前

情報が表示されますが、プロンプトは表示されませんLast login: ...Ctrl+Cそれから以下のスクリーンショットのように、プロンプトが表示され、ユーザー名とパスワードが正しいことが証明されます。

Ctrl+Cの後

今朝からオフィスにある Web サーバーでこの問題が発生しています。マシンのディスクが今日交換されたのは偶然ではありませんが、古いディスクが複製されただけで、システムの他のすべてのユーザーにはこの問題が発生していません。

何が起こっているのか知っている人はいますか?

答え1

シェルの初期化ファイルの 1 つで時間がかかっています。ログイン シェルが bash の場合はまたは(または)set -xの先頭に、zsh の場合はとを追加してください。こうすることで、シェルは各コマンドを実行する前に出力します。その後 を実行してトレースをオフにします。~/.bash_profile~/.profile~/.bash_login~/.zprofile~/.zlogin~/.zshrcset +x

このコマンドは、システム全体の初期化スクリプトから呼び出されるコマンドである可能性があります/etc/profile。そのファイルを変更できないが、その動作を確認する必要がある場合は、トレースをオンにしてログイン シェルを実行します (例: ) bash --login -x

別の方法としては、2 回目にログインして、psや他のツールで何が起こっているかを確認することです。Linux では、ps xすべてのプロセスが表示されます (プレーンpsでは現在の端末で実行されているプロセスのみが表示されますが、ここでは役に立ちません)。ps -t pts/42端末で実行されているプロセスに制限されます/dev/pts/42(2 番目のセッションの端末を特定するには、最初に を実行する必要がある可能性がありますps x)。

答え2

シェルをハングさせているプロセスを強制終了する代わりに、Crtl+Z で停止し、jobsコマンドを使用してそれが何であったかを確認します。

答え3

おそらく、$HOME/.bashrc または $HOME/.profile のいずれかで実行されているコマンドが、正しくバックグラウンド化されていないか、ユーザーからの入力を待機している可能性があります。まずは、この 2 つのファイルを確認します。

そこに何も見つからない場合は、それらのファイルに相当するシステム ファイル、/etc/bashrc、/etc/profile、およびディレクトリ /etc/profile.d/* 内のファイルを確認します。おそらく、システム管理者が、ログイン時に実行しようとしているシステム レベルのファイルに何かを追加した可能性があります。

関連情報