尝试理解 macOS 中的“w”命令

尝试理解 macOS 中的“w”命令

目前正在学习一些 UNIX 命令,遇到了几个无法解释的问题。感谢您的回答。

  1. w当我从终端运行命令时,我收到一些消息,如下图所示。我知道s000代表我在其中输入命令的终端w。但我对名称为的 tty 感到困惑console,它说我通过它登录了系统。它说console已经闲置了一段时间。我可以切换到 来console激活这个 tty 以使其不再闲置吗?

  2. 我还做了另一个实验,试图踢出正在登录的来宾用户。我知道我可以终止来宾正在运行的 bash 进程,但不知何故,我在终止来宾console正在运行的 时遇到了问题。我怎样才能在不重新启动计算机的情况下完全踢出来宾?我无法杀死console。这个问题的根源与第一个问题几乎相同:“控制台”代表什么?绝对不是我在其中输入命令的终端w

  3. 这个问题在 Linux 系统上也会出现,比如 Ubuntu 14.04,后者用console数字来命名01。我不知道 tty 列中的 0 或 1 是什么意思。但我可以肯定它们的含义与 类似console

这是图片

答案1

我不熟悉 macOS,但我认为这些概念与 Linux 中的概念非常相似。这有点过于简单,但基本上,在这种情况下,“控制台”是指整个计算机。或者,更具体地说,是显示器和人机输入设备(键盘、指点设备等)(网络登录不包含在“控制台”中。)

当您登录到您的计算机(本地,而不是通过网络)时,您正在登录到控制台。

现在你显然已经熟悉了终端——你可以在其中运行命令的窗口,例如lsw。当你登录到控制台时,它会自动运行一个命令(或一组命令),为你提供你习惯的窗口界面。有些操作系统使这种情况发生的机制可见,有时甚至是可调整的;其他操作系统则完全“在后台”完成。

由于控制台不运行任何命令(除了窗口系统本身),因此它似乎处于空闲状态。在大多数操作系统上(我认为 macOS 是其中之一),切换到控制台的唯一方法是退出窗口系统 — 但这会将您返回到控制台,然后控制台会自动将您注销。

还有另外一个问题:

  • w命令读取系统文件,将数据格式化以便于人们查看,并将其写入标准输出。
  • 每当有人在控制台或通过网络登录时,都会将条目写入文件。某些(大多数?所有?)系统还会在控制台上的用户启动新终端窗口时写入条目。
  • 当用户注销或关闭终端窗口时,条目通常会被删除。
  • 上述要点中的关键词是“通常”。在某些情况下,如果您终止某个进程(尤其是以超级用户身份执行此操作),则可能会干扰删除旧数据的机制。因此,w可能会报告不再有效的信息。

如果你不知道如何使用ps,你应该学习。你可以使用它反而w,但最好将它们一起使用。使用w为您提供在输出中寻找什么的路线图ps。不要盲目相信一切w;只相信您可以验证的信息ps。例如,如果您已经杀死了所有“guest”进程,但w仍然显示“guest”已登录,则它可能为您提供了过时的无效信息。


你可能会发现shell、控制台、终端有什么区别? 和 “终端”、“shell”、“tty”和“控制台”之间到底有什么区别? 值得一读。

相关内容