O comando referenciado em 'ps aux' não existe?

3

Quando eu executo ps aux | grep /usr/local/apache/bin/httpd , recebo a seguinte saída.

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

O que eu acho interessante é que /usr/local/apache/bin/httpd não existe. Não existe nenhum diretório /usr/local/apache/bin/ .

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

Quando executo /proc/9837$ sudo /usr/local/apache/bin/httpd -DSSL , obtenho:

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

Quando executo sudo ls -l /proc/9837/exe , obtenho:

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

Minha pergunta é: por que isso está acontecendo? Não deve /proc/<pid>/cmdline e /proc/<pid>/exe estar relacionado? Se isso não for normal, que passos posso dar para descobrir o que causou isso?

Esses processos permanecem mesmo depois de executar sudo /etc/init.d/apache2 stop

Para referência, estou executando o Ubuntu Ubuntu 10.04.4 LTS executando o Apache2 a partir do repositório padrão do apt.

sudo ls -l /proc/9837/fd de saídas

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 retorna

  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
    
por Citricguy 17.10.2012 / 08:28

2 respostas

2

Cheira de peixe. Os programas podem substituir seus $0 . O programa finge ser o Apache, mas na verdade é perl.

Vá para /proc/$PID/fd e veja quais arquivos foram abertos, talvez isso lhe dê uma pista do que está acontecendo.

    
por 17.10.2012 / 08:44
0

você disse que instalou o apache2 do repositório padrão. você pode executar uma verificação de consistência com base nesse pacote para verificar o que está faltando?

Parece que alguém / alguma coisa / de alguma forma deletou alguns dos arquivos do apache. Mas o apache foi iniciado antes disso, então ainda permanece na memória

    
por 17.10.2012 / 09:35

Tags