
Cuando lo ejecuto ps aux | grep /usr/local/apache/bin/httpd
obtengo el siguiente resultado.
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
Lo que me parece interesante es que eso /usr/local/apache/bin/httpd
no existe. No hay ningún /usr/local/apache/bin/
directorio en absoluto.
sudo cat /proc/9837/cmdline
devoluciones/usr/local/apache/bin/httpd -DSSL
Cuando corro /proc/9837$ sudo /usr/local/apache/bin/httpd -DSSL
me sale:
/usr/local/apache/bin/httpd: command not found
Cuando corro sudo ls -l /proc/9837/exe
me sale:
lrwxrwxrwx 1 www-data www-data 0 2012-10-17 02:06 /proc/9837/exe -> /usr/bin/perl
Mi pregunta es, ¿por qué sucede esto? ¿No debería /proc/<pid>/cmdline
y /proc/<pid>/exe
estar relacionado? Si esto no es normal, ¿qué pasos puedo seguir para saber qué lo causó?
Estos procesos permanecen incluso después de ejecutarse.sudo /etc/init.d/apache2 stop
Como referencia, estoy ejecutando Ubuntu Ubuntu 10.04.4 LTS ejecutando Apache2 desde el repositorio apto predeterminado.
sudo ls -l /proc/9837/fd
salidas
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
devoluciones
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
Respuesta1
Huele a pescado. Los programas pueden anular sus $0
. El programa pretende ser Apache, pero en realidad es Perl.
Vaya /proc/$PID/fd
y eche un vistazo a los archivos que tiene abiertos, tal vez esto le dé una idea de lo que está pasando.
Respuesta2
dijiste que habías instalado apache2 desde el repositorio predeterminado. ¿Puedes ejecutar una verificación de coherencia basada en ese paquete para comprobar qué falta?
Parece que alguien/algo/de alguna manera eliminó algunos de los archivos de Apache. Pero Apache se había iniciado antes de eso, por lo que aún permanece en la memoria.