2013-07-27 298 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

兩個不同的用戶會看到不同的進程列表,那麼你很可能遇到了預期的行爲。 –