在我收到提示之前,什麼進程正在運行?

在我收到提示之前,什麼進程正在運行?

當我登入特定伺服器時,我看到以下內容:

在 ctrl+c 之前

請注意,我收到Last login: ...訊息但沒有提示。我擊中了Ctrl+C並且只擊中了然後我是否收到提示,從而證明我的用戶名和密碼是正確的,如下面的螢幕截圖所示。

ctrl+c 後

從今天早上開始,我在辦公室的網路伺服器上就一直遇到這個問題。今天機器中的磁碟已被更換並非巧合,但所發生的只是舊磁碟已被克隆,並且系統的所有其他用戶都沒有遇到此問題。

有人知道會發生什麼事?

答案1

您的 shell 初始化檔案之一中的某些內容花費了很長時間。如果您的登入 shell 是 bash,則在or (或)set -x的頂部添加;如果是 zsh,則在和的頂部添加。這樣 shell 將在執行每個命令之前列印它。之後運行以關閉跟踪。~/.bash_profile~/.profile~/.bash_login~/.zprofile~/.zlogin~/.zshrcset +x

該命令可能是從系統範圍的初始化腳本呼叫的命令/etc/profile。如果您無法變更該檔案但需要查看它的作用,請執行具有追蹤功能的登入 shell,例如bash --login -x

ps另一種方法是再次登入並觀察其他工具的情況。在 Linux 上ps x顯示所有進程(純文字ps僅顯示在當前終端機上運行,這裡沒有什麼好處);ps -t pts/42限制在終端機上執行的進程/dev/pts/42(您可能需要ps x先執行以確定第二個會話的終端)。

答案2

相反,要終止掛起 shell 的進程,請嘗試使用 Crtl+Z 停止它,然後使用jobs命令查看它是什麼。

答案3

您的 $HOME/.bashrc、$HOME/.profile 中很可能正在運行一個命令,該命令要么沒有正確後台運行,要么正在等待用戶的輸入。我會先看一下這兩份文件。

如果那裡沒有任何結果,那麼我會查看這些檔案的系統等效項,/etc/bashrc、/etc/profile 以及目錄 /etc/profile.d/* 中的檔案。也許有人(系統管理員)為那些系統級文件添加了一些內容,這些文件現在在您登入時嘗試運行。

相關內容