Убить все процессы, связанные с портом
Убейте все процессы на порту 3000. Это то, что пробовали:
ubuntu@111:~/chatapp$ sudo netstat -peanut|grep 3000
tcp6 0 0 :::3000 :::* LISTEN 0 632007 18200/node
ubuntu@111:~/chatapp$ sudo kill 18200
ubuntu@111:~/chatapp$ sudo netstat -peanut|grep 3000
tcp6 0 0 :::3000 :::* LISTEN 0 632207 18349/node
ubuntu@111:~/chatapp$ sudo killall node
ubuntu@111:~/chatapp$ sudo netstat -peanut|grep 3000
tcp6 0 0 :::3000 :::* LISTEN 0 632364 18414/node
ubuntu@111:~/chatapp$
3 ответа
Вы можете использовать следующую команду, чтобы получить только pid
:
sudo netstat -peanut | grep 3000 | awk '{ print $9 }' | sed 's:/[^/]*$::' | grep -Eo '[0-9]{1,5}'
awk
Команда получает 9-е поле.
sed
команда получает pid
перед косой чертой.
И команда grep возвращает только цифры для удаления лишних строк.
Здесь вы можете просто иметь цикл и убивать процессы.
Некоторые программы не будут отображаться, если вы не запустите netstat
с судо. Сравните эти два прогона:
$ netstat -natp | grep tcp6
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 0 :::25 :::* LISTEN -
tcp6 0 0 :::445 :::* LISTEN -
tcp6 0 0 :::139 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN
$ sudo netstat -natp | grep tcp6
[sudo] password for xieerqi:
tcp6 0 0 :::25 :::* LISTEN 1522/master
tcp6 0 0 :::445 :::* LISTEN 770/smbd
tcp6 0 0 :::139 :::* LISTEN 770/smbd
tcp6 0 0 :::22 :::* LISTEN 1190/sshd
Что касается уничтожения процесса, связанного с самим портом, то это простой случай парсинга вывода из netstat
(что может сделать awk) и передать вывод этой команды в xargs -I {} kill -TERM {}
,
Вот как можно проанализировать вывод с awk
, По умолчанию awk использует пробелы для разделения выходных данных на поля, поэтому я должен циклически перебирать все поля (из-за нескольких пробелов awk считает, что между реальным текстом есть несколько полей).
$ sudo netstat -natp | awk '/:53579/{sub(/\//," ");for(i=1;i<=NF;i++){\
> if($i~/ESTABLISHED/||/LISTEN/||/CLOSE WAIT/) print $(i+1)}}'
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
5027
Остальное будет просто
that_command_above | xargs -I {} kill -TERM {}
использовать killport
killport можно скачать отсюда используя это:
wget https://raw.githubusercontent.com/abdennour/miscs.sh/master/killport
sh killport 3000
Другой способ можно использовать это:
sudo kill -9 3000