ps 命令:“r”选项如何工作?应该如何使用?

ps 命令:“r”选项如何工作?应该如何使用?

关于选项ps的命令r

根据man ps它表明

r      Restrict the selection to only running processes.

并根据ps --help a它表明

r                   only running processes

如果tty6执行了sleep 5000 &命令,然后jobs出现

[1]+ Running sleep 5000 &

预计并遵守跑步术语出现。它作为文档的两个来源。

现在,如果在同一个 tty 中执行ps r命令,则会出现:

  PID TTY     STAT   TIME COMMAND
 5508 tty6    R+     0:00 ps r

为什么sleep命令没有出现?

在此之前,假设是因为 是后台进程。如果现在简单地执行该yes命令 - 它会y按预期永远打印 - 并且它是一个前台进程。因为tty6被挡住了是的命令,那么如果在其他 tty 中(例如tty1)执行该ps -t tty6 r命令,则出现:

  PID TTY      STAT   TIME COMMAND
 5516 tty6     R+     0:21 yes

因此,直到这里为止,可以假设r仅适用于跑步 前景过程。

因此,这个r选项对于了解什么脚本或命令/工具(即:maven 的目标或 gradle 的任务)被执行并且仍然运行很长时间(它针对特定的 tty)很有用。此外,因为在文档的两个地方都出现了“仅运行进程”句子(观察“过程”复数)我假设以下命令模式将被考虑

ps -t tty3 -t tty4 -t tty5 -t tty6 r

但我确实意识到以下内容,如果对于上面显示的每个 tty 执行以下命令,如下所示:

cmatrix           # it is a screensaver and remains running
man ls            # it remains opened
ping spring.io    # it remains showing in the terminal each echo message
yes > /dev/null   # it remains running but not showing nothing in the terminal

如果ps -t tty3 -t tty4 -t tty5 -t tty6 r执行则出现:

  PID TTY      STAT   TIME COMMAND
 5598 tty6     R+     0:05 yes

为什么另一个前台进程没有被考虑?

问题

  • 该选项如何r运作? - 应该如何使用?

目的/目标

根据我的理解,有很多流程类型,例如“奔跑、僵尸、悬浮……”因此,要列出/检索/显示特定类型的报告 -“跑步”类别 - 理论上应该使用r选项来检索。

此外,例如,如果执行 Maven/Gradle 命令来构建/测试具有多个选项的多个模块 - 并且需要 25 分钟,终端窗口仍然显示许多有关进程本身的行 - 所以一段时间后- 我需要知道执行了哪些命令(并且仍在运行)以及使用了哪些选项/参数 - 所以我认为该r选项是正确使用的方法 - 这是该选项的目的r- 对吗?

答案1

r选项仅显示实际正在运行的进程。睡眠不处于运行状态,但不出所料,处于睡眠状态。该程序基本上解析您的输入并调用sleep(),仅此而已。前台程序和睡眠程序之间是有区别的。前台和后台状态主要是关于它在 shell 中的位置,而不是它是否消耗 CPU。

大多数时候,进程实际上并没有运行那么多。如果运行 top 并查看 和S字段%CPU,您可以看到大多数进程的状态为 S,并且已用 CPU 时间的百分比很小。

您可能希望 psr选项仅表示具有状态的进程R,但由于某种原因,它还包括状态进程D(不间断睡眠)。至少从 1999 年开始就是这样,我不知道为什么。

该标志现在很可能用于查找失控的进程。这就是您ps r多次运行并且始终出现相同进程的地方。这不是一个明确的问题,但您可能想问为什么该进程始终在运行。

请记住,它是您运行时进程的正确状态ps(更正确的是,当ps检查进程状态时)。如果您ps 每 10 秒运行一次,并且除了您运行的那一刻之外,一个进程对 CPU 的影响达 9.99 秒ps,就其而言,它不是一个正在运行的进程ps

这就像每小时看一眼窗外来检查邻居是否有访客一样。你可能会抓住某人,但机会很小。

几乎总是您不想运行ps并选择运行状态。如果您想弄清楚什么占用了大部分 CPU,top空闲状态打开(按 i)将显示您需要的内容。这种类型的选择询问“自上次刷新以来 CPU 使用率数据是否发生变化”?

相关内容