ps axuwfw
Run Code Online (Sandbox Code Playgroud)
这是几个 BSD 样式选项的组合(所有这些都在手册页中man ps):
a: 包括来自其他用户的进程x: 包括没有终端的进程u: 显示面向用户的信息字段w:宽输出(132 列而不是 80 列)f:“森林”:进程的树状视图w:更宽的输出(完全没有限制)换句话说,它只是显示当前正在运行的进程。
但是,如果您在那里看到旧进程,请检查它们的“STAT”字段 - 如果显示Z,则该进程已退出但其父进程尚未“收割”它;这个过程是一个“僵尸”。这通常表明父进程有轻微错误,或者已挂起/崩溃。
另请注意,并非所有操作系统都接受这些选项。在 SysV 上,它可能是ps -ef.
ps axuwfw | grep -v grep | grep -i screen
Run Code Online (Sandbox Code Playgroud)
这|是一个管道。它将一个命令的输出重定向到另一个命令的输入。这应该更明显地表明,以上不仅仅是一个奇怪的魔法命令;它是连接的三个命令。
第一个命令 ,ps axuwfw已经解释过了。
grep, 用于搜索/过滤文本。grep foo只会打印包含文本“foo”的输入行。使用该-v选项,第二个命令 – grep -v …– 执行相反的操作 – 打印不匹配的行。(再次参考man grep或grep --help。)
这个特殊的调用是必要的,因为管道中的所有进程同时运行,所以ps…将显示所有grep…进程 - 并且ps axu | grep screen会导致grep…除了所需的条目之外还匹配它自己的条目。因此,grep…添加了第二个以明确忽略其中包含“grep”的行。
(当然,有更好的工具,比如pgrep -alf screen,但很多人仍然使用这种ps|grep|grep…管道,因为它很容易结合只知道ps和grep。)
第三个命令 ,grep -i screen再次只是提取包含“screen”的行。
如手册页和grep --help输出中所述,添加该-i选项会使搜索不区分大小写,因此它还会输出其中包含“屏幕”或“屏幕”的行。
简而言之,完整命令只是打印那些ps…谈论“屏幕”程序的行。
“以上两个命令在示例中从这里返回 431 和 7……”
他们没有。它们返回有关名为“screen”或“tmux”的进程的信息。示例中给出的数字是返回的进程数。
幻灯片的作者没有包含完整的输出(这并不真正相关);他们只将总数作为汇总,表明“屏幕”用户比“tmux”用户多 60 倍。
如果您希望命令实际为您计算行数,您可以 a) 将-c(count) 选项添加到最后一个 grep…命令,或 b) 通过| wc -l. (两者都有效。)
“......但在我的系统中它返回垃圾。”
它返回一些以前运行过的较旧的 makefile 输出和截断的进程树
这不是垃圾——这正是您要求的输出。
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |