lsof і прослуховування портів


50

Я намагаюся отримати всі процеси прослуховування для підключення до мережі на Mac OS X. netstatНемає -pможливості, і я намагаюся з lsof

lsof -i -sTCP:LISTEN

дає мені справедливий перелік процесів прослуховування, але не всі. Я можу, наприклад, telnet до порту 10080, де у мене є процес прослуховування з'єднання, але це не відображається на виході lsof. Що я пропускаю?

$ telnet localhost 10080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.

але

$ sudo lsof -n -i | grep 10080
$

3
Чи відповідає результат lsof amandaзамість 10080?
Джон Лін

3
@JonLin Я не помітив, що -nвпливає лише на адреси, а не на порти. Для отримання номерів портів я також повинен використовувати -P. Спасибі
Маттео

3
@JonLin: але у вас є посада lsof -i -sTCP:LISTEN, і це без -nі 10080 теж не виявило. Таким чином, ви повинні використовувати -P.
Ханан Н.

Відповіді:


75
sudo lsof -iTCP -sTCP:LISTEN
sudo lsof -iTCP -sTCP:LISTEN -P
sudo lsof -iTCP -sTCP:LISTEN -P -n
sudo lsof -iTCP -sTCP:LISTEN -n

Усі повертають ті самі 32 записи ( ... | wc -l) на моєму широко використовуваному Lion MBP.

-P -nзаважає lsofвиконувати роздільну здатність імен і не блокує. Відсутній будь-який із них, це може бути дуже повільним.

Для UDP: sudo lsof -iUDP -P -n | egrep -v '(127|::1)'. Без -nі -Pце займе багато часу.

Нагадування. Це не включає налаштування брандмауера.


3
Так, проблема була відсутньою -P. Я помилково припустив, що -nзастосовується не лише до IP-адрес, але і до номерів портів.
Маттео

-1
  1. Спершу з’ясуйте ідентифікатор процесу (pid), який займав необхідний порт (наприклад, 5434):

    ps aux | grep 5434
    
  2. Убити цей процес:

    kill -9 <pid>
    

5
ps auxне перелічує порти, якими користується процес
Matteo

Я згоден з Маттео; Ви впевнені, що не зробили щось на зразок netstat -anp | grep 5434 (який поверне список речей, які слухають на 5434, а перший чи другий стовпець - pid?)
Foon

6
Таким чином, може працювати лише в ситуації, коли викликається процес з номером порту, який явно вказаний у рядку виконання, і ця частина рядка буде відповідна грепом.
techraf

1
Використання kill -9в якості першого варіанту позбавлення від процесу є надзвичайним вибором. Крім того, це насправді не відповідає на питання, яке стосується не вбивства речей, а з'ясування того, що працює.
lindes
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.