2013-07-27 229 views
1

警告:我Perl和CGI初学者所以这可能是愚蠢的问题。Perl脚本:不同的结果形式的命令行和CGI

我写了一个非常简单的Perl脚本,这应该对打开的文件,对系统运行的进程信息。有这样的功能流程:

sub num_processes() { 
    my @lines = `/bin/ps -ef`; 
    return scalar @lines; 
} 

如果我从bash中运行它,它会返回在系统中所有正在运行的进程,但是当我通过Apache和CGI运行它,它retruns只有2个过程(运行脚本并运行' ps -ef')。此CGI脚本在启用shell(/ bin/bash)的用户下运行。如何通过apache和CGI获得所有进程,是否有任何可能性?

+0

所以''@ lines'阵列的num_processes'回报大小? –

回答

1

你的CGI脚本将作为Apache用户帐户运行。您的shell调用将以您的用户帐户运行。这可能是你得到两个不同答案的原因。看看像suEXEC来管理其下的CGI脚本运行的用户。

+0

感谢您的反馈,但我忘记添加信息,运行scipt的用户与apache不同(感谢suexec)并启用了shell。 – stderr

+0

两个不同的用户会看到不同的进程列表,那么你很可能遇到了预期的行为。 –