使用kill、awk、ps 和grep 在一行中杀死进程

使用kill、awk、ps 和grep 在一行中杀死进程

我有几个进程弹出,并且我能够打印一行 pgid,我想将其输入到终止命令中。

这是我所拥有的: sudo ps o pgid,args | grep mininet: | sudo awk '{print -$0}'

返回类似的东西

-3834
-3841
-3844
-3846
-3848
-3853
-3856
-3859
-3862

我否定了该部分的输出{print -$0},以便它们也杀死子进程。

grep 命令在 bash 命令中搜索表示父程序的参数

现在我想打电话sudo kill -SIGSTOP,但我看到这里http://www.chemie.fu-berlin.de/chemnet/use/info/gawk/gawk_9.html除了条件、打印等之外,你不能在 awk 中使用命令。我是否弄错了,或者有没有办法将输入重定向到kill命令来停止进程。

上下文:暂停 mininet 网络模拟器。我想把它作为一句台词来做,因为它会很酷。我对如何赋予优先级|以及如何将一个命令输入另一个命令感到有点困惑。

按照 Unix 哲学进行编码,我不应该担心瓶颈,但如果有人认为这是一个不好的方法,我也会很感激这些信息。

谢谢~

编辑:

此命令停止进程:

sudo ps o pgid,args | grep mininet: | sudo awk  '{system("sudo kill --signal SIGSTOP -"$1)}' - 

awk你可以使用system("program ")

采纳这个有效的建议:

sudo pgrep -f mininet: | sudo awk  '{system("sudo kill --signal SIGCONT -"$1)}' - 

答案1

此命令停止进程:

sudo ps o pgid,args | grep mininet: | sudo awk  '{system("sudo kill --signal SIGSTOP -"$1)}' - 

awk你可以使用system("program ")

采纳使用 pgrep 的建议,这也有效:

sudo pgrep -f mininet: | sudo awk  '{system("sudo kill --signal SIGCONT -"$1)}' - 

相关内容