Di bawah AIX, bagaimana saya bisa mendapatkan path lengkap dari program yang terikat ke port?

14

Di Linux saya dapat menggunakan netstat -tulpnwdan ps, seperti:

# 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
# 

Bagaimana saya bisa mendapatkan path lengkap dari program yang terikat ke port saat menggunakan kshdi AIX 6?

LanceBaynes
sumber

Jawaban:

10

Seperti yang direkomendasikan oleh IBM : gunakan lsof -i -ndan cari port XY. Jika Anda menginginkan hasil parseable lsof, gunakan -Fflag dan parsing output dengan awk.

Anda bisa mendapatkan binari yang telah dikompilasi untuk AIX V5 . Saya tidak tahu apakah ada binari yang telah dikompilasi untuk V6; jika tidak ada, dapatkan sumbernya dan kompilasi.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
lsof tidak selalu tersedia di AIX: P
LanceBaynes
2
Jadi Unduh atau kompilasi dari sumber , ini direkomendasikan oleh IBM .
Gilles 'SO- stop being evil'
tidak selalu ada "lsof" di mesin ... tapi saya bisa menganggap ini sebagai jawaban yang baik (yang lain juga "bagus"! ty)
LanceBaynes
4

Coba gunakan netstatdengan rmsock.

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

Untuk netstat , -Amenunjukkan alamat semua blok kontrol protokol yang terkait dengan soket, -aopsi menunjukkan keadaan semua soket termasuk yang dari proses server, dan -nopsi memberikan output dalam bentuk numerik, sehingga Anda tidak membuang waktu untuk mencoba menyelesaikan alamat .

rmsock, menggunakan alamat yang diberikan di kolom1 keluaran netstat , dan menggunakan tcpcbdatabase, akan mengembalikan informasi tentang proses memegang soket itu, termasuk pid dan nama.

Anda kemudian dapat menggunakan ps -ef | grep $piduntuk mendapatkan informasi proses.

Anda dapat melihat artikel ini di IBM Systems Magazine untuk informasi lebih lanjut tentang ini.

Tim Kennedy
sumber
ini bukan acara yang dijalankan dengan benar di AIX
Kiwy
1

Salah satu cara tercepat untuk menemukan port penguncian aplikasi adalah dengan menggunakan lsof atau lsof64 :

lsof64 -nP | grep $PortNumber

atau

lsof -nP | grep $PortNumber

Di atas akan mengembalikan ID proses penguncian / menggunakan nomor port yang diberikan. Setelah Anda memilikinya, jalankan di bawah ini untuk menemukan menjalankan aplikasi / proses

proctree $pid
Saumil
sumber
0

Saya tidak terbiasa dengan AIX, tetapi sudahkah Anda mencoba watau ememformat argumen ps?

ps uwx | grep 1482
# or 
ps uex | grep 1482
frogstarr78
sumber
Anda dapat memeriksa manualnya secara online. AIX psmemang mendukung flag BSD tradisional, tetapi bagaimana flag yang Anda indikasikan membantu?
Gilles 'SO- stop being evil'
Hm, sepertinya mereka melakukan hal yang berbeda pada AIX. Meskipun dokumentasi yang Anda referensikan mencakup opsi l yang mencetak "PENGGUNA, PID,% CPU,% MEM, SZ, RSS, TTY, STAT, STIME, WAKTU, dan bidang PERINTAH"
frogstarr78
0
netstat -ape | grep $PortNumber
Anonim
sumber
Bisakah Anda menjelaskan apa yang dilakukan perintah? Menyisipkan kode tanpa pembenaran tidak terlalu membantu.
n0pe