`ps aux` 中引用的命令不存在?

`ps aux` 中引用的命令不存在?

當我運行時,ps aux | grep /usr/local/apache/bin/httpd我得到以下輸出。

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
www-data  9837  0.0  0.0  23112  1360 ?        S    Oct15   0:00 /usr/local/apache/bin/httpd -DSSL
www-data  9841  0.0  0.0  23112  1568 ?        S    Oct15   0:16 /usr/local/apache/bin/httpd -DSSL
www-data 29178  0.0  0.0  23112  1064 ?        S    Oct04   1:51 /usr/local/apache/bin/httpd -DSSL

但我覺得有趣的是,這種情況/usr/local/apache/bin/httpd並不存在。/usr/local/apache/bin/根本沒有目錄。

sudo cat /proc/9837/cmdline回報/usr/local/apache/bin/httpd -DSSL

當我跑步時/proc/9837$ sudo /usr/local/apache/bin/httpd -DSSL我得到:

/usr/local/apache/bin/httpd: command not found

當我跑步時sudo ls -l /proc/9837/exe 我得到:

lrwxrwxrwx 1 www-data www-data 0 2012-10-17 02:06 /proc/9837/exe -> /usr/bin/perl

我的問題是,為什麼會發生這種情況?/proc/<pid>/cmdline和不應該/proc/<pid>/exe有關係嗎?如果這不正常,我可以採取哪些措施來找出原因?

這些進程即使在運行後仍然存在sudo /etc/init.d/apache2 stop

作為參考,我正在運行 Ubuntu Ubuntu 10.04.4 LTS,並從預設 apt 儲存庫運行 Apache2。


sudo ls -l /proc/9837/fd輸出

lr-x------ 1 www-data www-data 64 2012-10-17 02:47 0 -> /dev/null
l-wx------ 1 www-data www-data 64 2012-10-17 02:47 1 -> pipe:[37796710]
l-wx------ 1 www-data www-data 64 2012-10-17 02:47 2 -> /var/log/apache2/error.log
lrwx------ 1 www-data www-data 64 2012-10-17 02:47 3 -> socket:[37796725]
lr-x------ 1 www-data www-data 64 2012-10-17 02:47 4 -> pipe:[40055427]

stat /proc/9837/root回報

  File: `/proc/9837/root' -> `/'
  Size: 0           Blocks: 0          IO Block: 1024   symbolic link
Device: 3h/3d   Inode: 49853155    Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (   33/www-data)   Gid: (   33/www-data)
Access: 2012-10-17 02:07:00.240782014 -0400
Modify: 2012-10-17 02:06:43.860777313 -0400
Change: 2012-10-17 02:06:43.860777313 -0400

答案1

聞起來有魚腥味。程式可以覆蓋它們的$0.該程式偽裝成 Apache,但實際上是 Perl。

/proc/$PID/fd看看它打開了哪些文件,也許這可以讓您了解發生了什麼情況。

答案2

你說你已經從預設儲存庫安裝了 apache2 。您可以根據該套件執行一致性檢查來檢查缺少什麼嗎?

似乎有人/某事/以某種方式刪除了一些 apache 檔案。但apache在此之前已經啟動過,所以它仍然保留在記憶體中

相關內容