Pidleri olmayan bir süreç nasıl belirlenir?


47

2 bağlantı noktasını dinleyen bir işlemim var: 45136 / tcp ve 37208 / udp (aslında aynı işlem olduğunu varsayıyorum). Ancak netstat hiçbir şekilde geri ödeme yapmıyor:

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

"Grep 37208" ile aynı sonuç.

Ben de denedim.

lsof -i TCP:45136

Fakat hiçbir şey döndürmez. Bu yeni bir sıkma teçhizatı ve bu işlemin ne olacağını gerçekten bilmiyorum. Herhangi bir fikir ?

CEVAP Yorumlarınız sayesinde ne olduğunu öğrendim. Ben nfs-server nfs-common (dkpg --get-seçimler | grep nfs aramadan sonra) 'nı kaldırdım ve bilinmeyen süreç ortadan kalktı. Garip olan, çekirdek işlemleri hiçbir şekilde işaretlenmemiş olsa da.

İkinize de tekrar teşekkürler. ;)

Yanıtlar:


57

netstat

Orada bir işlem var, kullanıcı adınız ne olduğunu görmek için özel değil. Bu lsofsizi görmekten alıkoyan bir koruma katmanıdır . Sadece komutu yeniden çalıştırın, ancak sudobunun yerine komutu kullanarak önekleyin.

$ sudo netstat -antlp | grep 45136

lsofEn tepede bununla ilgili bir uyarı bile var .

(İşlemlerin tümü tanımlanamadı, ait olmayan işlem bilgileri gösterilmez, hepsini görmek için kök olmanız gerekir.)

Örnek

$ 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

Eğer hiç şansınız yoksa netstatbelki ssde yapacağız. Yine de kullanmanız gerekecek sudove çıktı biraz daha şifreli olabilir.

Örnek

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

İşlem kimliği hala orada değil mi?

Kullanılan TCP portuyla ilişkilendirilmiş bir PID'nin bulunmadığı durumlar vardır. NFS hakkında, @ derobert'in cevabından birini okuyabilirsiniz . Diğerleri var. IMAP gibi servislere geri bağlanmak için ssh tünellerini kullandığım örnekleri var. Bunlar da işlem kimliği olmadan gösteriliyor.

Her durumda netstat, sonuçta bir TCP portu kullanarak hangi işlemin ne olduğuna ek ışık tutabilecek daha ayrıntılı bir form kullanabilirsiniz .

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

Örnek

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

Çıktının INODES içerdiğini fark ederseniz, bu bilgiyi kullanarak işleme geri dönebiliriz.

$ find -inum 152555007

Hangi size bir sürece yol açabilecek bir dosya gösterecektir.

Referanslar


@derobert - Onların konu olduğunu düşünüyordum.
slm

@slm (userspace) thread PID'lerine sahiptir.
derobert,

@derobert - Ben de öyle düşündüm ama emin olmak için iki kez kontrol ediyordum.
slm

@derobert - Bunu buldum: "Linux çekirdeğinin kendisi NFS sunucusunu (aka" knfsd ") sağlar. Dolayısıyla, çekirdek bir işlem olmadığı için ilişkili bir işlem yoktur."
slm

@JohnDoe - NFS ile ilişkili olabilir.
slm

16

Diğer bir seçenek ise soketin bir işleme ait olmaması, çekirdeğe ait olmasıdır. Bunun yaygın bir örneği NFS'dir.

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      -               

Genel olarak bunları tanımlamanın iyi bir yolu olduğundan emin değilim. Özel NFS örneğinde, rpcinfogenellikle bize söyleyebilecek:

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

Ne yazık ki, bu sadece IPv4 için çalışıyor. V6'yı almak için -pbağlantı noktasını aptal bir şekilde görüntüleyen ayrılmak zorundasınız : İki ek IP adresi sekizli olarak. Böylece, 55607 numaralı bağlantı noktası 217.55 olur (çünkü 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
rpcinfo -pYalnızca
IPv4'te
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.