目前正在学习一些 UNIX 命令,遇到了几个无法解释的问题。感谢您的回答。
w
当我从终端运行命令时,我收到一些消息,如下图所示。我知道s000
代表我在其中输入命令的终端w
。但我对名称为的 tty 感到困惑console
,它说我通过它登录了系统。它说console
已经闲置了一段时间。我可以切换到 来console
激活这个 tty 以使其不再闲置吗?我还做了另一个实验,试图踢出正在登录的来宾用户。我知道我可以终止来宾正在运行的 bash 进程,但不知何故,我在终止来宾
console
正在运行的 时遇到了问题。我怎样才能在不重新启动计算机的情况下完全踢出来宾?我无法杀死console
。这个问题的根源与第一个问题几乎相同:“控制台”代表什么?绝对不是我在其中输入命令的终端w
。这个问题在 Linux 系统上也会出现,比如 Ubuntu 14.04,后者用
console
数字来命名0
或1
。我不知道 tty 列中的 0 或 1 是什么意思。但我可以肯定它们的含义与 类似console
。
答案1
我不熟悉 macOS,但我认为这些概念与 Linux 中的概念非常相似。这有点过于简单,但基本上,在这种情况下,“控制台”是指整个计算机。或者,更具体地说,是显示器和人机输入设备(键盘、指点设备等)(网络登录不包含在“控制台”中。)
当您登录到您的计算机(本地,而不是通过网络)时,您正在登录到控制台。
现在你显然已经熟悉了终端——你可以在其中运行命令的窗口,例如ls
和w
。当你登录到控制台时,它会自动运行一个命令(或一组命令),为你提供你习惯的窗口界面。有些操作系统使这种情况发生的机制可见,有时甚至是可调整的;其他操作系统则完全“在后台”完成。
由于控制台不运行任何命令(除了窗口系统本身),因此它似乎处于空闲状态。在大多数操作系统上(我认为 macOS 是其中之一),切换到控制台的唯一方法是退出窗口系统 — 但这会将您返回到控制台,然后控制台会自动将您注销。
还有另外一个问题:
- 该
w
命令读取系统文件,将数据格式化以便于人们查看,并将其写入标准输出。 - 每当有人在控制台或通过网络登录时,都会将条目写入文件。某些(大多数?所有?)系统还会在控制台上的用户启动新终端窗口时写入条目。
- 当用户注销或关闭终端窗口时,条目通常会被删除。
- 上述要点中的关键词是“通常”。在某些情况下,如果您终止某个进程(尤其是以超级用户身份执行此操作),则可能会干扰删除旧数据的机制。因此,
w
可能会报告不再有效的信息。
如果你不知道如何使用ps
,你应该学习。你可以使用它反而的w
,但最好将它们一起使用。使用w
为您提供在输出中寻找什么的路线图ps
。不要盲目相信一切w
;只相信您可以验证的信息ps
。例如,如果您已经杀死了所有“guest”进程,但w
仍然显示“guest”已登录,则它可能为您提供了过时的无效信息。
你可能会发现shell、控制台、终端有什么区别? 和 “终端”、“shell”、“tty”和“控制台”之间到底有什么区别? 值得一读。