Редактировать полей запятыми полей и конкретное поле GreeP, больше моего состояния

Три варианта перечисления открытых портов предлагаются в jsh whatisonport :

netstat -anp --numeric-ports | grep ":${PORT}\>.*:" 

fuser -v "${PORT}"/tcp

lsof -P -S 2 -i "tcp:${PORT}" | grep "\(:${PORT}->.*:\|:$PORT (LISTEN)$\)"

Я предпочитаю netstat , потому что он быстрый, краткий и может перечислить порты, открытые другими пользователями. (Хотя для перечисления имен и PID таких процессов по-прежнему потребуются привилегии суперпользователя / пользователя.)

Выходы

$ netstat -anp --numeric-ports | grep ":80\>.*:" 
tcp6       0      0 :::80           :::*            LISTEN      1914/apache2    

$ fuser -v "80/tcp"
                     USER        PID ACCESS COMMAND
80/tcp:              root       1914 F.... apache2
                     www-data  12418 F.... apache2
...

$ lsof -P -S 2 -i "tcp:80" | grep "\(:80->.*:\|:80 (LISTEN)$\)"
apache2  1914     root    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
apache2 12418 www-data    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
...

Использование grep в двух случаях должно соответствовать только порту на локальном компьютере. стороне и пропускать открытые соединения с удаленным портом 80. (Альтернативой может быть использование -l с netstat или с lsof для использования -sTCP: LISTEN , но мне нравятся приведенные выше команды greps, потому что они также ловят исходящие соединения от данного порта, что иногда может представлять интерес.)

With lsof мы используем -P для отображения : 80 вместо : http , чтобы сделать возможным использование grep. Параметр -S 2 заставляет lsof выполнять своевременное завершение.

Завершение процесса

Предполагая, что мы хотим использовать netstat , мы могли бы получить PID следующим образом:

$ netstat -anp --numeric-ports | grep ":80\>.*:" | grep -o "[0-9]*/" | sed 's+/$++'
1914
...

И мы могли бы даже передать эти PID в kill :

... | xargs -d '\n' kill -KILL

Однако часто существует вероятность ложного срабатывания при использовании регулярных выражений, поэтому я бы рекомендовал просто посмотреть на исходный результат netstat , а затем вручную решить, запускать или нет:

$ kill -KILL 1914

См. Также

] У меня есть еще один скрипт под названием listopenports , который может быть интересен.

0
03.07.2018, 23:56
0 ответов

Теги

Похожие вопросы