Ответ 1
Это может помочь
lsof -n -i4TCP:8080
PID - это второе поле на выходе.
Или попробуйте:
lsof -i -P
В MacOSX я использую Packer для создания коробки Vagrant, поэтому мне нужно постоянно поднимать ее и оторвать. Я пытаюсь "бродяжничать" и получаю стандартную ошибку, потому что порт используется:
"Vagrant не может перенаправлять указанные порты на этой виртуальной машине, так как они сталкиваются с каким-либо другим приложением, которое уже прослушивает эти порты. Переадресованный порт на 8080 уже используется на главной машине.
Решение кажется достаточно простым: мне просто нужно определить процесс, который держит порт 8080 открытым и убивает этот процесс, верно?. Это не так просто.
Если я запустил команду:
nmap localhost -p 8080
Получаю следующий вывод:
PORT STATE SERVICE
8080/tcp open http-proxy
Если я запустил следующую команду:
top -o prt
Самый высокий порт, используемый в 1360
Если я запустил следующую команду:
netstat -tulpn | grep :8080
Получаю:
netstat: n: unknown or uninstrumented protocol
Если я запустил следующую команду:
lsof -i :8080
Я не получаю выход
Если я перезагружу свой компьютер, порт теперь доступен, и теперь я могу "бродяжничать".
Как я могу убить любой процесс, используя порт 8080, чтобы я мог без проблем перезагружать компьютер?
Это может помочь
lsof -n -i4TCP:8080
PID - это второе поле на выходе.
Или попробуйте:
lsof -i -P
lsof -n -i4TCP:8080
PID
является вторым полем. Затем убейте этот процесс:
kill -9 PID
Перейти к /usr/local/bin/
(можно использовать команду + shift + g в поиске)
Создайте файл с именем stop
. Вставьте в него приведенный ниже код:
#!/bin/bash
touch temp.text
lsof -n -i4TCP:$1 | awk '{print $2}' > temp.text
pidToStop='(sed '2q;d' temp.text)'
> temp.text
if [[ -n $pidToStop ]]
then
kill -9 $pidToStop
echo "Congrates!! $1 is stopped."
else
echo "Sorry nothing running on above port"
fi
rm temp.text
stop 8888
(или любой порт)Если вышеуказанный ответ не сработал, попробуйте следующее решение. Вы можете использовать его для порта 8080 или для любых других портов.
sudo lsof -i tcp:3000
Замените 3000 на любой порт, который вы хотите. Запустите команду ниже, чтобы убить этот процесс.
sudo kill -9 PID
PID - это идентификатор процесса, который вы хотите убить.
Ниже приведен вывод команд на Mac Terminal.
Мне нужно было запустить эту команду
sudo lsof -i :80 # checks port 8080
Затем я получил
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
acwebseca 312 root 36u IPv4 0x34ae935da20560c1 0t0 TCP 192.168.1.3:50585->104.25.53.12:http (ESTABLISHED)
показать, какая служба использует PID
ps -ef 312
Тогда я получил это
UID PID PPID C STIME TTY TIME CMD
0 312 58 0 9:32PM ?? 0:02.70 /opt/cisco/anyconnect/bin/acwebsecagent -console
Чтобы удалить агент веб-безопасности cisco, выполните
sudo /opt/cisco/anyconnect/bin/websecurity_uninstall.sh
Это может быть Cisco AnyConnect. Проверьте, существует ли /Library/LaunchDaemons/com.cisco.anyconnect.vpnagentd.plist. Затем выгрузите его с помощью startctl и удалите из/Library/LaunchDaemons
Чтобы написать это:
pid=$(lsof -ti tcp:8080)
if [[ $pid ]]; then
kill -9 $pid
fi
Аргумент -t
выводит lsof "terse", что означает, что он возвращает только PID.
Вы также можете использовать Монитор активности для идентификации и выхода из процесса с помощью порта.
Запуск: nmap -p 8080 localhost
(установите nmap с помощью MacPorts или Homebrew, если у вас его еще нет в системе)
Отчет о сканировании Nmap для localhost (127.0.0.1)
Хост завершен (0.00034s латентность).
Другие адреса для localhost (не отсканированные): 1
ГОСУДАРСТВЕННАЯ СЛУЖБА ПОРТА
8080/tcp открыть http-proxy
Запуск: ps -ef | grep http-proxy
UID PID PPID C STIME TTY TIME CMD
640 99335 88310 0 12:26 pm ttys002 0: 00.01 grep http-proxy "
Запуск: ps -ef 640
(замените 501 на свой UID)
/System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/XPCServices/com.apple.PerformanceAnalysis.animationperfd.xpc/Contents/MacOS/com.apple.PerformanceAnalysis.animationperfd
Порт 8080 на mac osx используется чем-то установленным с XCode SDK