Der in „ps aux“ referenzierte Befehl existiert nicht?

Der in „ps aux“ referenzierte Befehl existiert nicht?

Beim Ausführen ps aux | grep /usr/local/apache/bin/httpderhalte ich die folgende Ausgabe.

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

Interessant finde ich allerdings, dass es das /usr/local/apache/bin/httpdnicht gibt. Es gibt /usr/local/apache/bin/überhaupt kein Verzeichnis.

sudo cat /proc/9837/cmdlinekehrt zurück/usr/local/apache/bin/httpd -DSSL

Beim Ausführen /proc/9837$ sudo /usr/local/apache/bin/httpd -DSSLerhalte ich Folgendes:

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

Beim Ausführen sudo ls -l /proc/9837/exe erhalte ich Folgendes:

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

Meine Frage ist, warum das passiert? Sollte das nicht /proc/<pid>/cmdlinedamit /proc/<pid>/exezusammenhängen? Wenn das nicht normal ist, welche Schritte kann ich unternehmen, um die Ursache herauszufinden?

Diese Prozesse bleiben auch nach dem Ausführen bestehensudo /etc/init.d/apache2 stop

Als Referenz: Ich verwende Ubuntu Ubuntu 10.04.4 LTS mit Apache2 aus dem Standard-Apt-Repository.


sudo ls -l /proc/9837/fdAusgänge

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/rootkehrt zurück

  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

Antwort1

Das riecht komisch. Programme können ihre überschreiben $0. Das Programm gibt vor, Apache zu sein, ist aber in Wirklichkeit Perl.

Gehen Sie zu /proc/$PID/fdund schauen Sie nach, welche Dateien geöffnet wurden. Vielleicht gibt Ihnen das einen Hinweis darauf, was los ist.

Antwort2

Sie sagten, dass Sie Apache2 aus dem Standard-Repository installiert hätten. Können Sie basierend auf diesem Paket eine Konsistenzprüfung ausführen, um zu prüfen, was fehlt?

Es scheint, dass irgendjemand / irgendetwas / irgendwie einige der Apache-Dateien gelöscht hat. Aber Apache wurde vorher gestartet, also sind sie immer noch im Speicher

verwandte Informationen