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?

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.


lsof tidak selalu tersedia di AIX: P
— LanceBaynes


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.


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

0

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

ps uwx | grep 1482
# or 
ps uex | grep 1482

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

Bisakah Anda menjelaskan apa yang dilakukan perintah? Menyisipkan kode tanpa pembenaran tidak terlalu membantu.
— n0pe
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.