Иногда мне нужно убить определенный процесс, который прослушивает известный порт, чтобы освободить этот порт.
Когда я выполняю sudo lsof -n -i :1084 , чтобы получить PID процесса, прослушивающего порт 1084 , я получаю следующий результат
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1603   pi   11u  IPv4  26101      0t0  TCP *:1084 (LISTEN)
sshd    1603   pi   12u  IPv6  26102      0t0  TCP *:1084 (LISTEN)
С grep -P 'IPv4.+LISTEN' Я могу получить строку, где процесс прослушивает этот порт, используя IPv4
проведение
sudo lsof -n -i :1084 | grep -P 'IPv4.+LISTEN'
возвращается
sshd    1603   pi   11u  IPv4  26101      0t0  TCP *:1084 (LISTEN)
Как теперь я могу получить 1603 чтобы передать это, чтобы kill?
Я попытался с помощью grep, sed (sudo lsof -n -i :1084 | grep -P 'IPv4.+LISTEN' | sed -E 's/sshd\ +(\d+)\ /\1/g'), но я просто не знаю как.
Должна быть команда типа sudo lsof -n -i :1084 | grep -P 'IPv4.+LISTEN' | xargs --no-run-if-empty kill {$second_argument}' который позволил бы мне заархивировать эту цель, есть идеи?
Кроме того, если это не решение с помощью sed , как будет выглядеть решение с использованием sed (я мог бы использовать это в других случаях)?
