Làm thế nào để xác định một quá trình không có pid?


47

Tôi có một quy trình nghe 2 cổng: 45136 / tcp và 37208 / udp (thực sự tôi cho rằng đó là quy trình tương tự). Nhưng netstat không trả lại bất kỳ pid nào:

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

Kết quả tương tự với "grep 37208".

Tôi cũng đã thử lsof:

lsof -i TCP:45136

Nhưng nó không trả lại bất cứ điều gì. Đây là một bản cài đặt mới của vắt và tôi thực sự không biết quá trình này có thể là gì. Ý tưởng nào không ?

TRẢ LỜI Nhờ những bình luận của bạn, tôi đã tìm ra nó là gì. Tôi đã cài đặt nfs-server nfs-common (sau khi tìm kiếm dkpg --get-select | grep nfs) và quá trình không xác định bị từ chối. Điều kỳ lạ là các quy trình kernel không được đánh dấu theo bất kỳ cách nào.

Một lần nữa cám ơn hai bạn. ;)

Câu trả lời:


57

netstat

Có một quá trình ở đó, người dùng của bạn không thể thấy được nó là gì. Đây là một lớp bảo vệ được cung cấp bởi lsofđiều đó khiến bạn không nhìn thấy điều này. Đơn giản chỉ cần chạy lại lệnh nhưng tiền tố sử dụng sudolệnh thay thế.

$ sudo netstat -antlp | grep 45136

Thậm chí còn có một cảnh báo về điều này ở đầu ra lsofở đầu.

(Không phải tất cả các quy trình có thể được xác định, thông tin quy trình không thuộc sở hữu sẽ không được hiển thị, bạn sẽ phải root để xem tất cả.)

Thí dụ

$ 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

Nếu bạn không gặp may mắn thì có netstatlẽ sssẽ làm được. Bạn vẫn sẽ cần sử dụng sudovà đầu ra có thể khó hiểu hơn một chút.

Thí dụ

$ 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 quá trình vẫn không có?

Có những trường hợp đơn giản là không có PID liên quan đến cổng TCP đang sử dụng. Bạn có thể đọc về NFS, trong câu trả lời của @ derobert , một trong số đó. Co nhung nguoi khac. Tôi có những trường hợp tôi đang sử dụng các đường hầm ssh để kết nối lại với các dịch vụ như IMAP. Chúng cũng hiển thị mà không có ID quá trình.

Trong mọi trường hợp, bạn có thể sử dụng một hình thức dài dòng hơn netstatcó thể làm sáng tỏ thêm về quá trình cuối cùng sử dụng cổng TCP.

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

Thí dụ

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

Nếu bạn nhận thấy đầu ra bao gồm INODES để chúng tôi có thể quay lại quá trình sử dụng thông tin này.

$ find -inum 152555007

Nó sẽ cho bạn thấy một tập tin có thể dẫn bạn đến một quá trình.

Người giới thiệu


@derobert - Tôi đã nghĩ rằng họ là chủ đề.
slm

Chủ đề @slm (không gian người dùng) có PID.
derobert

@derobert - đó là những gì tôi nghĩ nhưng đã kiểm tra lại để chắc chắn.
slm

@derobert - Tôi đã tìm thấy điều này: "Bản thân hạt nhân Linux cung cấp máy chủ NFS (còn gọi là" knfsd "). Do đó, không có quy trình liên quan vì hạt nhân không phải là một quy trình."
slm

@JohnDoe - có thể là họ có liên quan đến NFS.
slm

16

Một tùy chọn khác là socket không thuộc về một tiến trình, nó thuộc về kernel. Một ví dụ phổ biến về điều này là 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      -               

Tôi không chắc chắn một cách tốt, nói chung, để xác định những điều này. Trong trường hợp cụ thể của NFS, rpcinfothường sẽ có thể cho chúng tôi biết:

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

Thật không may, điều đó chỉ hoạt động cho IPv4. Để có được v6, bạn phải rời đi -p, sau đó hiển thị số cổng theo cách ngớ ngẩn: Là hai octet bổ sung của địa chỉ IP. Do đó, cổng 55607 trở thành 217,55 (vì 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

1
Cảm ơn bạn đã chỉ ra rpcinfo -pchỉ hoạt động cho IPv4
youfu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.