Bagaimana cara mengidentifikasi suatu proses yang tidak memiliki pid?

47

Saya memiliki proses yang mendengarkan 2 port: 45136 / tcp dan 37208 / udp (sebenarnya saya menganggap itu adalah proses yang sama). Tetapi netstat tidak mengembalikan pid:

netstat -antlp | grep 45136
tcp        0      0 0.0.0.0:45136           0.0.0.0:*           LISTEN      - 

Hasil yang sama dengan "grep 37208".

Saya mencoba juga:

lsof -i TCP:45136

Tapi itu tidak mengembalikan apa pun. Ini adalah instalasi baru pemerasan dan saya benar-benar tidak tahu apa yang bisa menjadi proses ini. Ada ide ?

JAWABAN Terima kasih atas komentar Anda, saya mengetahui apa itu. Saya menghapus nfs-server nfs-common (setelah pencarian dkpg --get-pilihan | grep nfs) dan proses yang tidak diketahui hilang. Aneh meskipun proses kernel tidak ditandai dengan cara apa pun.

Sekali lagi terima kasih untuk kalian berdua. ;)

John Doe
sumber

Jawaban:

57

netstat

Ada proses di sana, userid Anda tidak mengetahui rahasia apa itu. Ini adalah lapisan perlindungan yang disediakan oleh lsofyang membuat Anda tidak bisa melihat ini. Cukup jalankan kembali perintahnya tetapi awali menggunakan sudoperintah sebagai gantinya.

$ sudo netstat -antlp | grep 45136

Bahkan ada peringatan tentang ini di output lsofdi atas.

(Tidak semua proses dapat diidentifikasi, info proses yang tidak dimiliki tidak akan ditampilkan, Anda harus menjadi root untuk melihat semuanya.)

Contoh

$ netstat -antlp | grep 0:111
tcp        0      0 0.0.0.0:111       0.0.0.0:*     LISTEN      -                   

$ sudo netstat -antlp | grep 0:111
tcp        0      0 0.0.0.0:111       0.0.0.0:*     LISTEN      1248/rpcbind

ss

Jika Anda tidak beruntung netstatmungkin ssakan melakukannya. Anda masih harus menggunakan sudo, dan hasilnya bisa sedikit lebih samar.

Contoh

$ ss -apn|grep :111
LISTEN     0      128         :::111             :::*     
LISTEN     0      128          *:111              *:*     

$ sudo ss -apn|grep :111
LISTEN     0      128         :::111             :::*      users:(("rpcbind",1248,11))
LISTEN     0      128          *:111              *:*      users:(("rpcbind",1248,8))

ID proses masih belum ada?

Ada beberapa contoh di mana tidak ada PID yang terkait dengan port TCP yang digunakan. Anda dapat membaca tentang NFS, dalam jawaban @ derobert , yang merupakan salah satunya. Ada yang lain. Saya memiliki contoh di mana saya menggunakan terowongan ssh untuk menghubungkan kembali ke layanan seperti IMAP. Ini juga muncul tanpa ID proses.

Dalam kasus apa pun Anda dapat menggunakan bentuk yang lebih verbose netstatyang mungkin memberi tambahan cahaya tentang proses apa yang pada akhirnya menggunakan port TCP.

$ netstat --program --numeric-hosts --numeric-ports --extend

Contoh

$ netstat --program --numeric-hosts --numeric-ports --extend |grep -- '-' | head -10
Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode      PID/Program name   
tcp        0      0 192.168.1.103:936           192.168.1.3:60526           ESTABLISHED root       160024310  -                   
tcp        0      0 192.168.1.1:2049            192.168.1.3:841             ESTABLISHED sam        159941218  -                   
tcp        0      0 127.0.0.1:143               127.0.0.1:57443             ESTABLISHED dovecot    152567794  13093/imap-login    
tcp        0      0 192.168.1.103:739           192.168.1.3:2049            ESTABLISHED root       160023970  -                   
tcp        0      0 192.168.1.103:34013         192.168.1.3:111             TIME_WAIT   root       0          -                   
tcp        0      0 127.0.0.1:46110             127.0.0.1:783               TIME_WAIT   root       0          -                   
tcp        0      0 192.168.1.102:54891         107.14.166.17:110           TIME_WAIT   root       0          -                   
tcp        0      0 127.0.0.1:25                127.0.0.1:36565             TIME_WAIT   root       0          -                   
tcp        0      0 192.168.1.1:2049            192.168.1.6:798             ESTABLISHED tammy      152555007  -             

Jika Anda perhatikan output termasuk INODES sehingga kami dapat melacak kembali proses menggunakan info ini.

$ find -inum 152555007

Yang akan menunjukkan kepada Anda file yang dapat mengarahkan Anda ke suatu proses.

Referensi

slm
sumber
@derobert - Saya pikir mereka adalah utas.
slm
Utas @slm (userspace) memiliki PID.
derobert
@derobert - itulah yang saya pikir tetapi mengecek untuk memastikan.
slm
@derobert - Saya menemukan ini: "Kernel Linux itu sendiri menyediakan server NFS (alias" knfsd "). Dengan demikian tidak ada proses yang terkait karena kernel bukan proses."
slm
@ JohnDoe - mungkin itu terkait dengan NFS.
slm
16

Pilihan lain adalah bahwa soket itu bukan milik suatu proses, itu milik kernel. Salah satu contoh umum dari ini adalah NFS.

Watt:~# netstat -ltp | egrep -- '-[[:space:]]*$'
tcp        0      0 *:nfs                   *:*                     LISTEN      -               
tcp        0      0 *:48131                 *:*                     LISTEN      -               
tcp6       0      0 [::]:55607              [::]:*                  LISTEN      -               
tcp6       0      0 [::]:nfs                [::]:*                  LISTEN      -               

Saya tidak yakin cara yang baik, secara umum, untuk mengidentifikasi ini. Dalam kasus NFS tertentu, rpcinfosering kali dapat memberi tahu kami:

anthony@Watt:~$ rpcinfo -p | grep 48131
    100021    1   tcp  48131  nlockmgr
    100021    3   tcp  48131  nlockmgr
    100021    4   tcp  48131  nlockmgr

Sayangnya, itu hanya berfungsi untuk IPv4. Untuk mendapatkan v6, Anda harus berhenti -p, yang kemudian menampilkan nomor port dengan cara yang konyol: Sebagai dua oktet tambahan dari alamat IP. Port 55607 dengan demikian menjadi 217,55 (karena 217  × 256 +  55  = 55607):

anthony@Watt:~$ rpcinfo  | grep -i 217.55
    100021    1    tcp6      ::.217.55              nlockmgr   superuser
    100021    3    tcp6      ::.217.55              nlockmgr   superuser
    100021    4    tcp6      ::.217.55              nlockmgr   superuser
derobert
sumber
1
Terima kasih telah menunjukkan rpcinfo -phanya bekerja untuk IPv4
youfu