Saya ingin tahu port mana yang digunakan oleh proses mana dalam embedded-linux. Karena sederhana embedded-linux, tidak ada baris perintah jaringan seperti netstat, lsof. (hanya baris perintah dasar seperti cat, cp, echo, dll yang ada).
Solusi parsial tampaknya menggunakan baris perintah "cat / proc / net / tcp" dan "cat / proc / net / udp". Namun, saya tidak yakin daftar yang dicetak dari baris perintah itu menunjukkan semua port yang digunakan , dan daftar tidak menunjukkan proses mana yang diikat ke port tertentu .
Setiap komentar akan dihargai.
linux
networking
process
tcp
freddy
sumber
sumber
Jawaban:
Anda harus dapat menemukan semua port terbuka di
/proc/net/tcp
dan/proc/net/udp
. Masing-masing file memilikiinode
kolom, yang dapat digunakan untuk menemukan proses memiliki soket itu.Setelah Anda memiliki nomor inode, Anda dapat menjalankan perintah ls seperti
ls -l /proc/*/fd/* | grep socket:.$INODE
untuk menemukan proses menggunakan soket itu. Jika suatu proses telah diatur dengan deskriptor file yang berbeda untuk utas berbeda, Anda mungkin perlu memperluas perintahls -l /proc/*/task/*/fd/* | grep socket:.$INODE
untuk menemukan semuanya.sumber
find /proc -lname "socket:\[$INODE\]" 2> /dev/null
Untuk menemukan INODES untuk setiap port, jalankan perintah di bawah ini
Gunakan INODE apa pun dari output perintah di atas untuk menemukan PID terkait seperti di bawah ini
di sini $ INODE adalah nilai dari setiap INODE
Dalam satu perintah baris, kita dapat memeriksa, apakah ada port terbuka dan terkait dengan PID seperti di bawah ini
sumber