获取特定位置的参数以进行进一步的管道处理

获取特定位置的参数以进行进一步的管道处理

有时我需要终止正在监听已知端口的特定进程以释放该端口。

当我执行时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}'

进一步阅读

相关内容