Wie man herausfindet welcher Prozess auf einem bestimmten Port horcht:

Wenn man sich z.B. auf einem fremdem Server befindet und man herausfinden möchte welcher Prozess auf dem smtp-Port horcht, sind lsof und fuser von Nutzen.

Vorweg: Man muss root sein um beide befehle ausführen zu können ansonsten sieht das ganze so aus:

mj@predator:~$ lsof -i :25
mj@predator:~$

Also führen wir den Befehl als root aus:

root@predator:~# lsof -i :25
COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
master  2484    root   12u  IPv4  20405      0t0  TCP *:smtp (LISTEN)

Wir haben nun herausgefunden, dass der postfix master-Prozess auf Port 25 lauscht und unsere Aufgabe ist nun erfüllt.

Falls lsof auf dem System nicht vorhanden ist oder man sowieso fuser nutzt gibt es auch noch eine andere Möglichkeit die Aufgabe zu erfüllen:

root@predator:~# fuser -n tcp 25
25/tcp:               2484

Da hier nur die PID(2484) angezeigt wird müssen wir noch ps zu Rate ziehen:

root@predator:~# ps aux | grep 2484
root      2484  0.0  0.0   5828  1780 ?        Ss   19:38   0:00 /usr/lib/postfix/master

Zwei Befehle hintereinander abzusetzen ist natürlich unschön. Man kann das ganze auch auf folgende Art und Weise lösen:

root@predator:~# fuser -n tcp 25 2>&1 | awk {‚print $2‘} | xargs ps u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      2484  0.0  0.0   5828  1780 ?        Ss   19:38   0:00 /usr/lib/postfix/master

„fuser -n tcp 25“ bringt uns die Ausgabe von Port und PID.

Da wir aber nur die PID benötigen, nutzen wir „awk {‚print $2‘}“.

Damit awk den Output von fuser auch vernünftig verarbeiten kann, leiten wir stderr in stdout(Terminal) mit „2>&1“ um.

Zum Schluss übergeben wir das bisherige Ergebnis 2484 an „ps u“ mittels „xargs“.

Wir nutzen „ps u“ damit der User angezeigt wird, außerdem ist diese Ausgabe komfortabler zu lesen.