Это процесс, который я хочу убить:
sooorajjj@Treako ~/Desktop/MerkMod $ sudo netstat -tunap | grep :80
tcp6 0 0 :::80 :::* LISTEN 20570/httpd
Есть несколько способов определить, какой запущенный процесс использует порт.
Использование fuser даст PID для нескольких экземпляров, связанных с портом прослушивания.
sudo apt-get install psmisc
sudo fuser 80/tcp
80/tcp: 1858 1867 1868 1869 1871
Узнав, вы можете остановить или убить процесс (ы).
Вы также можете найти PID и более подробную информацию, используя lsof
sudo lsof -i tcp:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1858 root 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
nginx 1867 www-data 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
nginx 1868 www-data 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
nginx 1869 www-data 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
nginx 1871 www-data 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
Чтобы ограничить сокеты, которые прослушивают порт 80 (в отличие от клиентов, которые подключаются к порту 80):
sudo lsof -i tcp:80 -s tcp:listen
Чтобы убить их автоматически:
sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill
-k
переключатель, чтобы убить все совпадающие процессы, и-i
убить в интерактивном режиме (предлагая вам для каждого).Вот oneliner, который показывает команду для запуска:
Замените
echo
на,sudo
чтобы процесс действительно был убит.источник
echo
наsudo
80
.Три варианта списка открытых портов предлагается в JSH «s
whatisonport
:Я предпочитаю,
netstat
потому что это быстро, кратко, и может перечислить порты, открытые другими пользователями. (Хотя ему все еще потребуются привилегии суперпользователя / пользователя для перечисления имен и идентификаторов PID таких процессов.)Выходы
Использование
grep
в двух случаях - это сопоставление только порта на локальной стороне и пропуск открытых соединений с удаленным портом 80. (Альтернативой может быть использование-l
сnetstat
или сlsof
использованием-sTCP:LISTEN
, но мне нравятся приведенные выше greps, потому что они будут также перехватывать исходящие соединения с данного порта, что иногда может представлять интерес.)С помощью
lsof
мы используем-P
для отображения:80
вместо того,:http
чтобы сделать возможным grep. В-S 2
опции силы ,lsof
чтобы завершить своевременно.Убить процесс
Предполагая, что мы хотим использовать
netstat
, мы могли бы получить PID следующим образом:И мы могли бы даже передать эти PID
kill
:Однако при использовании регулярных выражений часто существует вероятность ложных срабатываний, поэтому я бы рекомендовал просто посмотреть на начальный вывод
netstat
и затем вручную решить, запускать или нет:Смотрите также
У меня есть другой скрипт,
listopenports
который может быть интересен.источник
Вы уже выяснили, какой процесс нужно убить: это номер процесса,
20570
а его двоичный файл имеет имя,httpd
записанное в конце строки выводаnetstat
. Вы можете убить его по номеруkill 20570
или по имени,killall httpd
но я бы не рекомендовал делать это таким образом.Порты ниже 1024 имеют стандартизированное использование (обычно), вы можете искать те и многие другие
less /etc/services
. Запись для порта 80 даже прокомментирована:Так что это, скорее всего, веб-сервер. Имя у вас есть
httpd
иman httpd
должны дать вам большой намек , что это бинарный Apache , который подходит. Apache - один из крупных игроков, у него есть несколько удобных управляющих программ, но они вам не нужны для простого запуска / остановки.У вас есть мята? С нормальным рабочим столом? Затем посмотрите в
Control Center
нижнююSystem
и нажмитеServices
. Вы должны быть администратором, чтобы сделать что-нибудь там. Прокрутите вниз, пока не найдете что-то с надписью «веб-сервер» (у меня вместо Apache lighttpd и я точно не знаю, как будет выглядеть запись Apache) и снимите флажок.Если вы просто хотите временно остановить его, попробуйте в консоли
и начать с
sudo service start httpd
.service --status-all
возвращает список всех сервисов, которыеservice
знает и может обработать. Ярлык для перезапуска службы (то есть: остановки и запуска его в этом порядке)service --full-restart SERVICE
сSERVICE
быть имя службы, например .:httpd
в случае Apache.Большинство программ, которые вы можете найти,
netstat
могут быть обработаны таким образом. Некоторые не могут, а некоторые даже не имеют man-страницы, но это редкость.источник
Есть простой способ сделать это. Сначала проверьте, какой процесс использует порт 80 с помощью netstat :
Теперь вы получили имя процесса и уничтожаете его командой killall :
источник
killall
без объяснения причин или предупреждений.