Команда, указанная в `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 с Apache2 из репозитория apt по умолчанию.


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 был запущен до этого, поэтому он все еще остается в памяти

Связанный контент