发现 Mac OS X 中正在运行和被阻止的进程数

bra*_*zzi 5 osx process

在 Linux 中,我可以发现正在运行和被阻止的进程的数量

grep "procs_running" /proc/stat
Run Code Online (Sandbox Code Playgroud)

grep "procs_blocked" /proc/stat
Run Code Online (Sandbox Code Playgroud)

有没有办法在 Mac OS X 中做到这一点?最好是我可以在 shell 脚本中使用的方法?

Ste*_*n D 3

基于 Blender 的答案,要获取正在运行的进程的数量,可以使用以下命令:

$ ps axo state | grep "R" | wc -l
Run Code Online (Sandbox Code Playgroud)

要获取不间断睡眠中的进程数,您可以使用(编辑将“D”更改为“U”,谢谢吉尔斯!):

$ ps axo state | grep "U" | wc -l
Run Code Online (Sandbox Code Playgroud)

  • 不间断等待 = 不间断睡眠 = 阻塞 = 在系统调用中。在 [OSX](http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/ps.1.html) 上,`ps` 输出中的字母是 `U`,不是“D”。 (2认同)
  • 此方法的一个问题是它不是原子的:它可能会多次对某些进程进行计数并忽略其他进程,因为这些进程已更改为您正在观察的状态之一或状态之一。 (2认同)