Команда, указанная в `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

2 ответа

Запах рыбный. Программы могут переопределить их $0, Программа притворяется Apache, но на самом деле это perl.

Идти к /proc/$PID/fd и посмотрите, какие файлы открыты, может быть, это даст вам понять, что происходит.

Вы сказали, что установили apache2 из репозитория по умолчанию. Можете ли вы запустить проверку согласованности на основе этого пакета, чтобы проверить, чего не хватает?

Кажется, кто-то / что-то / каким-то образом удалил некоторые файлы apache. Но Apache был запущен до этого, поэтому он все еще остается в памяти

Другие вопросы по тегам