我们可以通过安装GNU coreutilsbrew
。但是utils中没有ps
。我们可以ps
在OS X中使用gnu 吗?
我想使用GNU,ps
因为它具有更多选项和功能。
ps
因为它具有更多的选项和功能。
我们可以通过安装GNU coreutilsbrew
。但是utils中没有ps
。我们可以ps
在OS X中使用gnu 吗?
我想使用GNU,ps
因为它具有更多选项和功能。
ps
因为它具有更多的选项和功能。
Answers:
没有可移植的ps程序。正如其他人所提到的,Linux上可用的ps命令来自“ procps”软件包。之所以不能将其移植到OSX,是因为Linux和OSX内核不会以相同的方式公开此信息。Linux在/ proc中使用伪文件系统,而OSX使用sysctl函数。其他系统可能使用任何一种机制,但以不同的格式提供数据,或者可能要求诸如ps之类的程序直接从内核内存中读取。
通常,对于诸如ps和top之类的程序如何使用过程信息,没有标准。因此该程序必须针对特定的操作系统而设计。如果OSX ps缺少某个特定功能,则必须找到另一个可以执行此操作的程序,或者自己编写一个程序(请参阅sysctl手册,尤其是KERN_PROC作为起点),或者修改现有的ps。命令以添加功能。
或者,如果您可以通过解析ps命令本身的输出来获得所需的内容,则可以编写可移植的程序-该-o
选项的输出在各个平台上都相当可靠,尤其是在您参考UNIX标准的情况下。要使用的列名。
/proc
文件系统的Linux内核提供了获取进程列表的唯一方法,还是有独立也系统调用其提供的信息?
否-因为它不存在。至于为什么ps
GNU coreutils
软件包中没有内置的内容,请在Unix和Linux论坛上查看此答案。
通过Homebrew可获得的最佳替代公式是psgrep
:
psgrep是一个小的Bash shell脚本,它使用强大的实用程序grep(1)搜索进程列表(由ps(1)获得) 。
也就是说,您仍然psgrep
可以像OS X一样使用ps
。例如:
OPTIONS
-a Search the process list using BSD's "ps aux" format. This option
includes all users' processes in the search.
-b Search the process list using BSD's "ps ux" format (default).
This option only includes the running user's processes.
pgrep
也可以通过来使用brew
,它在语法上更接近ps
,但效率不如psgrep
:
psgrep(1)比pgrep(1)更有用,因为它不仅可以搜索进程列表并返回PID,而且还可以提供更多有用的信息,例如其UID,GID,内存/ CPU使用率,美观程度以及所有其他受支持的信息由ps。
全部强调我的。
pgrep
也是OS X最新版本的一部分
type -a pgrep
pgrep is /usr/local/bin/pgrep
pgrep is /usr/bin/pgrep
ps
或ps -ef
在终端上运行?我可以在两台不同的机器上不加修改地在OSX 10.7.5上工作。它在/ bin / ps中