UNIX下如何检测进程?

UNIX下如何检测进程?

UNIX下如何检测进程?
Windows下有对应的进程模块:
[quote]use Win32::Process::Info;[/quote]
利用GetProcInfo()即可获取系统进程信息,UNIX下呢?
我没有找到这样的模块。
难道一定要用ps...
难道一定要用ps来实现吗?
那样的话用SHELL编程既简单又快捷。
[quote]回复给 ...
[quote]回复给 feeling : 难道一定要用ps......[/quote]

unix的哲学就是“工具,而非策略”,而perl的名言是“条条大路通罗马”
所以,用ps来做当然是可以的,而且用perl的文本处理能力加上ps的功能,做起来就很容易了,
当然你用shell来做也未尝不可,随你喜好而已。

另外,如果非要只用perl来做,也是可以的,unix/linux 的进程信息都以目录/文本的方式保存在 /proc 下,你只要用perl读取该目录及目录下的文件信息即可。

参看:
man proc

以及他的翻译版本:

http://www.xfocus.net/articles/200103/112.html

还有:

http://search.cpan.org/~durist/Proc-ProcessTable-0.39/ProcessTable.pm




   

[quote]回复给 ...
[quote]回复给 cnhacktnt : [quote]另外,如果非要只用perl来做,也是可以的,unix/linux 的进程信息都以目录/文本的方式保存在 /proc 下,你只要用perl读取该目录及目录下的文件信息即可。[/quote]
谢谢回复!
对于上面提到的通过读取文件内容来获取进程信息的做法是可以的,但是适用于PROC文件系统,如:Solaris、某些版本的AIX等。
有些UNIX(如:HP-UX)并不支持PROC,或者说没有安装PROC文件系统,这样的话除了PS外似乎没有别的途径可以获取进程相关信息。

另外,你提到的Proc-ProcessTable-0.39我会仔细看的,多谢!
搞定!
去http://search.cpan.org/~durist/下载Proc-ProcessTable-0.39模块源代码:
[url=http://search.cpan.org/CPAN/authors/id/D/DU/DURIST/Proc-ProcessTable-0.39.tar.gz]Proc-ProcessTable-0.39[/url]
1. 二进制模式上传至主机任意目录,解压缩;
2. 进入Proc-ProcessTable-0.39目录(以下操作需root用户)
[quote]
perl Makefile.PL
make
make test # 成功的话有“All tests successful.”提示
make install # 有数个“Installing”的提示
[/quote]
哈,看了下源码...
哈,看了下源码,应该是使用了c写的扩展(原理差不多),的确不错
是不同平台上的一个统一可用的解决方法呵呵。