В том же духе, что и вопросы "Полезная командная строка" (для Windows, Linux, и Mac), Я думаю, было бы удобно иметь вопросы "полезные способы использования утилиты x". На страницах руководства рассказывается, что делают параметры, но не обязательно, почему вы их используете, что означает результат, какие полезные вещи делает команда, о которых вы никогда не узнаете без обширных экспериментов, или как получить действительно нужный ответ.
Я хотел бы знать о netstat. Казалось бы, я должен иметь возможность понять, какие процессы используют полосу пропускания, и, действительно, насколько быстро система использует полосу пропускания. Он также выглядит полезным для обнаружения нежелательных подключений (вероятно, вирусов) и предоставляет всевозможную информацию о маршрутизации (с которой мне пришлось играть только при попытке заставить КПК Sharp Zaurus использовать TCP / IP через USB). Другими словами, это звучит как золотая жила, и я надеялся, что некоторые из вас поделятся кусочками информации, которую вы нашли.
Пожалуйста, укажите в ответе версию netstat и вашу ОС. Было бы неплохо увидеть какой-нибудь пример вывода и узнать, что это значит. Я пометил этот вопрос как вики сообщества, и я надеюсь, что вы сделаете то же самое в своих ответах, чтобы другие люди, зная другую ОС, могли ввести почти эквивалентную команду, если они знают, в том же ответе, и Затем мы можем проголосовать за наиболее полезные ответы.
Показать локальные прослушивающие TCP / UDP-порты и процесс, которому они принадлежат:
sudo netstat -tulpn
Таблицы маршрутизации Netstat
[Это было протестировано на Mac OS X 10.5.7. Я подозреваю, что результат почти одинаков на всех платформах, поскольку было указано, что он работает на Solaris.]
netstat -r
предоставит вам таблицу маршрутизации.
netstat -nr
то же самое, но даст вам необработанные IP-адреса вместо поиска имен машин. Его вывод выглядит так (только длиннее):
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.40.250 UGSc 19 1 en1
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 1 3140 lo0
169.254 link#5 UCS 0 0 en1
169.254.33.92 127.0.0.1 UHS 0 0 lo0
192.168.40 link#5 UCS 11 0 en1
192.168.40.1 0:17:f2:ca:a0:94 UHLW 0 0 en1 1150
...
Internet6:
Destination Gateway Flags Netif Expire
::1 link#1 UHL lo0
fe80::%lo0/64 fe80::1%lo0 Uc lo0
fe80::1%lo0 link#1 UHL lo0
fe80::%en0/64 link#4 UC en0
...
ff02::/32 link#7 UC en2
ff02::/32 link#8 UC en3
Столбцы:
Пункт назначения и шлюз: Пункт назначения - это адрес (или диапазон адресов), на который мы можем отправить информацию. Все данные, отправленные в этот пункт назначения, будут отправлены на связанный шлюз. Шлюз знает, куда отправить данные для следующего «прыжка» в пути. Если мы хотим отправить данные в пункт назначения, для которого нет записи в таблице маршрутизации, они будут проходить через шлюз по умолчанию.
Флаги: На странице man / info перечислены все флаги. Вот что означают настройки моего шлюза по умолчанию:
UGSc
U - RTF_UP Route usable
G - RTF_GATEWAY Destination requires forwarding by intermediary
S - RTF_STATIC Manually added
c - RTF_PRCLONING Protocol-specified generate new routes on use
Любопытно, что он утверждается, что добавлен вручную, так как пришел через DHCP.
Ссылки: «Поле refcnt дает текущее количество активных использований маршрута. Протоколы, ориентированные на установление соединения, обычно удерживают один маршрут на время соединения, в то время как протоколы без установления соединения получают маршрут при отправке в то же место назначения». (Страница руководства)
Использование: «Поле использования обеспечивает подсчет количества пакетов, отправленных по этому маршруту».
Нетиф: «Запись интерфейса указывает сетевой интерфейс, используемый для маршрута».
На моем Mac
Срок действия: На странице руководства для другой версии netstat: «Отображает время (в минутах), оставшееся до истечения срока действия маршрута».
Проверьте CommandLineFu Страница Netstat для некоторых полезных способов использования netstat в bash.
В окнах:
c:>netstat -a | find /c "TCP"
68
Показывает количество TCP / IP-соединений. Полезно, если вы устраняете неполадки в высокопроизводительных сетевых системах, в которых не хватает портов TCP и вам необходимо увеличить MaxUserPorts.
Скорость передачи / приема
На Mac [OS X 10.5.7]:
netstat -i -w 10
[Видеть ответ Чака для заметок об использовании в Solaris и Linux.]
Результат выглядит так:
input (Total) output
packets errs bytes packets errs bytes colls
794 0 1166796 763 0 50358 0
789 0 1167773 765 0 52542 0
792 0 1166548 765 0 51174 0
796 0 1167262 598 0 40152 0
929 0 1278561 846 0 65625 0
563 0 815570 530 0 36828 0
32 0 4360 1 0 774 0
9 0 705 0 0 684 0
9 0 631 0 0 0 0
Это показывает, сколько пакетов и байтов было передано за заданный интервал времени. (10 секунд в этом примере). Я был подключен к YouTube и загружал более 1 МБ каждый интервал, пока не закрыл вкладку браузера и скорость не упала до минимума.
Это может оказаться полезным, если вы ждете завершения загрузки или загрузки. Следите за скоростью, и когда она резко упадет, вы поймете, что это сделано.
Обратите внимание, что приведенная выше команда показывает всю пропускную способность на всех интерфейсах. Чтобы привязать его к конкретному интерфейсу (в данном примере WiFi), используйте -I
флаг, как так:
netstat -I en1 -w 10
Windows:
Netstat -n
(Show active TCP connections, don't slow down trying to do name resolution)
Proto Local Address Foreign Address State
TCP 192.168.1.38:4853 69.59.196.212:80 ESTABLISHED
Показывает активные соединения TCP, но не активность UDP.
Netstat -an
(Show all connections, don't slow down trying to do name resolution)
Proto Local Address Foreign Address State
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 192.168.1.38:4853 69.59.196.212:80 ESTABLISHED
Показывает все активные TCP-соединения, а также прослушивающие TCP- и UDP-соединения. Здесь не отображается исходящая активность UDP.
Windows
netstat -b
Отобразить процесс с помощью подключения
Windows 7 (возможно, с более ранней версии):
netstat -ano
перечисляет активные сеансы с соответствующими PID
Active Connections
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 776
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:554 0.0.0.0:0 LISTENING 1724
или сохранить шаг
netstat -anb
(из командной строки CMD с повышенными правами) дает имя процесса
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
RpcSs
[svchost.exe]
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
Can not obtain ownership information
TCP 0.0.0.0:554 0.0.0.0:0 LISTENING
[wmpnetwk.exe]
TCP 0.0.0.0:2048 0.0.0.0:0 LISTENING
Я уверен, что изобретаю велосипед заново, но вот простой скрипт Perl чтобы запустить netstat и отсортировать вывод так, чтобы IP-адреса, которые в настоящее время в основном подключены, оказались наверху. Это лучше всего использовать с программой «смотреть» для обновлений с 2-секундными интервалами.
Обновление: значительное переписывание 2013-02-11, чтобы избавиться от многих проблем и отображать имена хостов
Пример вывода:
Distant inbound connections: 2
85.93.216.17:772 <-- 78.141.139.10 : 1 ip-78-141-139-10.dyn.luxdsl.pt.lu 1 x ESTABLISHED
80.90.47.155:443 <-- 78.141.139.10 : 1 ip-78-141-139-10.dyn.luxdsl.pt.lu 1 x ESTABLISHED
Distant outbound connections: 3
80.90.63.61 --> 80.90.63.48:25 : 2 smtp.m-plify.net 2 x TIME_WAIT
85.93.216.17 --> 85.93.216.18:772 : 1 maya.m-plify.net 1 x ESTABLISHED
Looping connections: 57 (10 duplicates)
127.0.0.1 --> 127.0.0.1:9355 : 20 1 x ESTABLISHED, 8 x TIME_WAIT, 11 x CLOSE_WAIT
127.0.0.1 --> 127.0.0.1:4713 : 10 10 x CLOSE_WAIT
127.0.0.1 --> 127.0.0.1:9353 : 9 4 x TIME_WAIT, 5 x CLOSE_WAIT
127.0.0.1 --> 127.0.0.1:3306 : 8 6 x ESTABLISHED, 1 x TIME_WAIT, 1 x CLOSE_WAIT
127.0.0.1 --> 127.0.0.1:5445 : 5 1 x ESTABLISHED, 4 x TIME_WAIT
127.0.0.1 --> 127.0.0.1:9354 : 2 2 x CLOSE_WAIT
127.0.0.1 --> 127.0.0.1:7998 : 1 1 x TIME_WAIT
127.0.0.1 --> 127.0.0.1:3351 : 1 1 x ESTABLISHED
127.0.0.1 --> 127.0.0.1:32000 : 1 1 x ESTABLISHED
Солярис:
netstat -nr
(displays routing table)
Из книги Wicked Cool Shell Scripts:
Скрипт # 90.1: Каждые n минут получать значения netstats (через crontab)
Скрипт # 90.2: Анализируйте журнал производительности netstat, выявляя важные результаты и тенденции.
(Обожаю эту книгу - стоит покупать!)
В Solaris многие люди используют команду netstat -i 1, чтобы получить текущее количество пакетов. В Linux netstat есть бесполезная версия этой функции, так как она показывает необработанное количество, а не дельту. Чтобы получить аналогичные результаты, выполните «sar -n DEV 1 0». Рассмотрим на самом деле "LANG = C sar -n DEV 1 0 | grep interfacename" (sar помещает время с AM и PM в начало строки в определенных регионах, поэтому лучше выработать привычку всегда запускать "LANG = C sar "на случай, если вы когда-нибудь его проанализируете).
В Solaris,
netstat -k
Показывает сводку различной статистики. Полезно для проверки ошибок и т. Д.
Поскольку никто еще не упомянул об этом:
netstat -s
предоставляет массу полезной статистики по протоколам под Linux.