在我收到提示之前,什么进程正在运行?

在我收到提示之前,什么进程正在运行?

当我登录到特定服务器时,我看到以下内容:

在 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/* 中的文件。也许有人(系统管理员)向那些系统级文件添加了一些内容,这些文件现在在您登录时尝试运行。

相关内容