清理 xargs 的输出

清理 xargs 的输出

作为隧道脚本的一部分,我想删除/终止任何现有隧道

到目前为止我已经做到了:

matt@HY731AA:~$ ps aux | grep "ssh -N lin1tunnels" | grep -v grep | awk '{print $2}' | xargs -0 kill -9 错误:垃圾进程 ID "5321 5322 "。

输出似乎包含“虽然删除了 xargs 却没有显示”,有没有办法清理输出以准备 xargs。或者也许有人知道更好的方法来实现上述目标

答案1

@John 建议使用 pkill 来执行此操作(如果您有的话),这是更简洁的方法,但仅供参考:问题在于您使用了 xarg 的-0标志(告诉它查找以空分隔的值),但发送的是换行符分隔的值。此外,不要使用第二个 grep 从结果中删除第一个 grep,而是搜索与自身不匹配的模式:

ps aux | grep "[s]sh -N lin1tunnels" | awk '{print $2}' | xargs kill -9

答案2

编辑

使用pkill

 pkill -9 -f "ssh -N lin1tunnels"

避免SIGKILL向指定进程或进程组发送信号。阅读无用地使用 Kill -9

相关内容