Ich möchte herausfinden, welcher Prozess (insbesondere die Prozess-ID) einen bestimmten Port verwendet. Der einzige Haken ist, dass ich weder sudo verwenden möchte noch als root angemeldet bin. Die Prozesse, für die dies funktionieren soll, werden von demselben Benutzer ausgeführt, für den ich die Prozess-ID ermitteln möchte. Ich hätte also gedacht, dass dies einfach ist.
Beide lsof
und netstat
werden mir die Prozess-ID nicht mitteilen, es sei denn, ich führe sie mit sudo aus - sie werden mir jedoch mitteilen, dass der Port verwendet wird.
Als zusätzlichen Kontext habe ich verschiedene Apps, die alle über SSH eine Verbindung zu einem von mir verwalteten Server herstellen und Reverse-Port-Forwards erstellen. Sobald diese eingerichtet sind, führt mein Server eine Verarbeitung über den weitergeleiteten Port durch, und dann kann die Verbindung unterbrochen werden. Wenn ich bestimmte Ports (jede App hat ihre eigenen) Prozessen zuordnen kann, ist dies ein einfaches Skript. Irgendwelche Vorschläge?
Dies ist übrigens auf einer Ubuntu-Box - aber ich vermute, dass jede Lösung in den meisten Linux-Distributionen Standard sein wird.
-an
.netstat -pant
funktioniert auch und es ist leichter zu merken.Pawels Vorschlag scheint mir gut zu funktionieren, aber als Alternative höre ich hier von shell1:
und hier
lsof
sehe ich es mit von shell2:Bearbeiten : Sie schreiben in einem Kommentar, dass
aber das ist nicht so für mich. Nachdem ich ssh verwendet habe, um den lokalen Port 8001 mit weiterzuleiten
ssh vpn.example.com -L 8001:rt.int:80
, finde ich dann:Könnten Sie uns vielleicht einen Teil Ihrer Beispielausgabe zeigen, vorzugsweise nicht zu stark redigiert?
quelle
lsof
Ausgabe nur sehen, wenn ich ihn als root / sudo ausführe.