有时我需要终止正在监听已知端口的特定进程以释放该端口。
当我执行时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
的(我可以在其他情况下使用它)?
答案1
我现在怎样才能获得 1603 以便能够将其传给杀死者?
这是一份工作awk
:
sudo lsof -n -i :1084 | grep -P 'IPv4.+LISTEN' | awk '{print $2}'