Вместо того, чтобы делать wc -l /proc/net/tcp
, есть ли более быстрый способ сделать это?
Мне просто нужно общее количество соединений TCP.
networking
monitoring
tcp
маргаритка
источник
источник
ss -s
Ответы:
Если вы просто хотите получить номер и вам не нужны никакие подробности, вы можете прочитать данные
/proc/net/sockstat{,6}
. Помните, что вы должны объединить оба значения, чтобы получить абсолютное количество соединений.Если вы хотите получить информацию из самого ядра, вы можете использовать ее
NETLINK_INET_DIAG
для получения информации из ядра, не считывая ее с/proc
источник
Более быстрый способ? Этот способ дает ответ за доли секунды, фактически на моем компьютере это занимает 0,009 секунды!
Вы ищете способ, который требует меньше печатать? В этом случае установите псевдоним, например,
Теперь вы можете просто ввести псевдоним, например
tcpcount
, то, что я использовал в моем примере, чтобы получить этот номер.Введите строку или добавьте ее в свой .bashrc, чтобы псевдоним определялся при каждом входе в систему.
Для большого количества соединений следующее может выполняться немного быстрее (и немного медленнее для очень малого числа соединений):
Или, может быть ...
Оба эти решения предполагают, что «wc» не очень оптимален для простого подсчета количества строк. Мое тестирование показывает, что это предположение верно.
Первая работает при условии, что команда tail действительно хороша для удаления ненужных данных, настолько, что она компенсирует создание дополнительной вложенной оболочки и выполнение дополнительной работы с переменными среды. Он использует тот факт, что строки в / proc / net / tcp уже пронумерованы, чтобы исключить необходимость подсчета строк. Окончательное решение предполагает, что awk считает достаточно хорошо, чтобы компенсировать любые недостатки из-за загрузки более крупной программы по сравнению с созданием нескольких процессов. Решение awk имеет дополнительное преимущество, заключающееся в том, что оно хорошо вписывается в простое однострочное определение псевдонима (что дает дополнительные преимущества в том смысле, что не вызывается ни один сценарий, поэтому дополнительные процессы оболочки не разветвляются, что дает дополнительное преимущество в несколько секунд).
источник
/proc/net/tcp
. Вы можете попробоватьnetstat -n -t | wc -l
, но я думаю, что netstat также читает из/proc/net/tcp
netstat -nt
около 180 000 подключений. Я не вижу причин, почему это должно быть таким медленным ... (чтение/proc/net/tcp
также очень медленное)awk
подход гораздо медленнее, чемwc
.tail
кажется наравне сwc
.Используйте
ss -s
команду, чтобы получить подробный ответ.источник