Я хочу знать, сколько людей подключено к моему серверу. Поскольку я занимаюсь аппликациями комет, это важно
Есть около миллиона способов сделать это, но:
netstat | grep http | wc -l
Имейте в виду, что http - это протокол без сохранения состояния. Каждая строка может представлять одного клиента, открывающего несколько сокетов для захвата разных файлов (css, изображений и т. Д.), Которые будут зависать некоторое время в состоянии ожидания времени.
Ниже приведены некоторые команды netstat, с помощью которых вы можете проверить количество подключений к серверу.
Чтобы отобразить все активные Интернет-соединения с серверами, включены только установленные соединения.
netstat -na
Чтобы отображать только активные Интернет-соединения с сервером на 80-м порту и сортировать результаты, разрешите распознавать множество соединений, поступающих с одного IP-адреса.
netstat -an | grep :80 | sort
Чтобы отобразить список всех задействованных IP-адресов, а не просто подсчитать.
netstat -n -p | grep SYN_REC | sort -u
Если ваш веб-сервер - apache, вы также можете использовать Статус сервера страница (после включения).
Я знаю, что это старый вопрос, но я нашел его, когда искал аккуратный способ подсчета всех входящих подключений к данному порту. Проблема с полным поиском порта заключается в том, что вы также будете перехватывать исходящие соединения, искажая ваши числа.
Например:
tcp 0 0 10.224.38.158:8080 10.225.239.6:38194 ESTABLISHED
tcp 0 0 10.224.38.158:8080 10.225.239.6:56825 ESTABLISHED
tcp 0 0 10.224.38.158:51512 10.226.194.28:8080 ESTABLISHED
tcp 0 0 10.224.38.158:51960 10.226.194.28:8080 TIME_WAIT
tcp 0 0 10.224.38.158:46937 10.226.194.28:8080 ESTABLISHED
tcp 0 0 10.224.38.158:51331 10.226.194.28:8080 TIME_WAIT
tcp 0 0 10.224.38.158:8080 10.225.239.6:29634 ESTABLISHED
Неизбирательная команда grep -c или awk | wc -l вернет «7», но на самом деле существует только «3» входящих соединений. В любом случае, я не нашел изящного способа сделать это, и мой awk-fu не так уж и плох, но в конечном итоге я выбрал netstat -an, использовал awk для печати только столбца «локальный адрес» и подсчитал экземпляры порт ищу.
netstat -an | grep -c 8080
ВЫХОД: 91
netstat -an | awk '{print $4}' | grep -c 8080
ВЫХОД: 31
Итак, 31 подключенный сокет на порт 8080. Надеюсь, это поможет. Если кто-нибудь знает более лаконичный способ сделать это, поделитесь им.