Wie kann ich unter AIX den vollständigen Pfad eines an einen Port gebundenen Programms ermitteln?

14

Unter Linux kann ich netstat -tulpnwund pswie folgt verwenden:

# netstat -tulpnw | grep :53
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      1482/named          
udp        0      0 127.0.0.1:53                0.0.0.0:*                               1482/named          

# ps aux | fgrep 1482
named     1482  0.0  1.0  93656 44900 ?        Ssl  Sep06   3:17 /usr/sbin/named -u named
root     20221  0.0  0.0   4144   552 pts/0    R+   21:09   0:00 fgrep --color=auto 1482
# 

Wie kann ich den vollständigen Pfad eines Programms abrufen, das unter kshAIX 6 an einen Port gebunden ist ?

LanceBaynes
quelle

Antworten:

10

Wie empfohlen von IBM : Einsatz lsof -i -nund suchen nach Port XY. Wenn Sie eine syntaktisch analysierbare Ausgabe von möchten lsof, verwenden Sie das -FFlag und analysieren Sie die Ausgabe mit awk.

Sie können vorkompilierte Binärdateien für AIX V5 erhalten . Ich weiß nicht, ob es vorkompilierte Binärdateien für V6 gibt. Wenn nicht, holen Sie sich den Quellcode und kompilieren Sie ihn.

Gilles 'SO - hör auf böse zu sein'
quelle
lsof ist unter AIX nicht immer verfügbar: P
LanceBaynes
2
So Laden Sie es oder kompilieren von Quelle , ist es von IBM empfohlen .
Gilles 'SO- hör auf böse zu sein'
Es gibt nicht immer "lsof" auf den Maschinen ... aber ich könnte dies als eine gute Antwort nehmen (andere sind auch "gut"!
Ty
4

Versuchen Sie es netstatmit rmsock.

port=$1
addr=`netstat -Aan | grep $port | awk '{print $1}`
pid=`rmsock $addr tcpcb | awk '{print $9}'`
ps -ef | grep $pid

Denn netstatdas -Azeigt die Adresse aller mit den Sockets verknüpften Protokollsteuerblöcke, die -aOption zeigt den Status aller Sockets, einschließlich derer von Serverprozessen, und die -nOption gibt die Ausgabe in numerischer Form aus, sodass Sie keine Zeit damit verschwenden, Adressen aufzulösen .

rmsockWenn Sie die in der Ausgabe von column1 angegebene Adresse verwenden netstatund die tcpcbDatenbank verwenden, werden Informationen zum Prozess zurückgegeben, der diesen Socket enthält, einschließlich der PID und des Namens.

Sie können dann verwenden ps -ef | grep $pid, um die Prozessinformationen abzurufen.

Weitere Informationen hierzu finden Sie in diesem Artikel im IBM Systems Magazine.

Tim Kennedy
quelle
Dieses Ereignis wird auf meinem AIX
Kiwy am
1

Eine der schnellsten Methoden zum Auffinden des Anwendungssperrports ist die Verwendung von lsof oder lsof64 :

lsof64 -nP | grep $PortNumber

oder

lsof -nP | grep $PortNumber

Oben wird die Prozess-ID-Sperre / unter Verwendung der angegebenen Portnummer zurückgegeben. Sobald Sie es haben, führen Sie es unten aus, um die laufende Anwendung / den laufenden Prozess zu finden

proctree $pid
Saumil
quelle
0

Ich bin nicht mit AIX vertraut, aber haben Sie versucht, die woder eFormatierungsargumente zu verwenden ps?

ps uwx | grep 1482
# or 
ps uex | grep 1482
frogstarr78
quelle
Sie können das Handbuch online überprüfen . AIX psunterstützt traditionelle BSD-Flags, aber wie helfen die von Ihnen angegebenen Flags?
Gilles 'SO- hör auf böse zu sein'
Hm, es sieht so aus, als würden sie unter AIX verschiedene Dinge tun. Obwohl die Dokumentation, auf die Sie verwiesen haben, eine l-Option enthält, die "USER-, PID-,% CPU-,% MEM-, SZ-, RSS-, TTY-, STAT-, STIME-, TIME- und COMMAND-Felder"
druckt
0
netstat -ape | grep $PortNumber
Anonym
quelle
Können Sie erklären, was der Befehl tut? Das Einfügen von Code ohne Begründung ist nicht sehr hilfreich.
Nr.