用名称杀掉随机进程

我想要一个杀死随机过程的方法(例如,一个随机perl进程)。

这样做的最好方法是什么?

我很想用这样的东西:

ps aux | grep PROCESS-NAME 

到一个文件,然后find一个随机的行号,得到第二列(进程ID?)并杀死它。

对我来说,只要杀死其中一个进程,实际上并不需要是一个随机的。 随意使它变得更好。

猛击一行:-p

 kill `ps auxww | grep zsh | awk '{print $2}' | while read line; do echo "$RANDOM $line"; done | sort | cut -d ' ' -f 2 | head -n 1` 

看看killall命令的-r选项!

还有'pidof'命令,可以用来杀死:

 kill `pidof processname` 

当有多个同名的进程时,只需要使用-s作为“single shot”。

听起来你已经走上了正轨。

你可以使用下面的perl脚本,把它保存为randomline.pl,它会从管道中返回一个随机的行

 #!/usr/bin/perl srand (time ^ $$ ^ unpack "%L*", `ps axww | gzip`); while (<>) { push(@_,$_); } print @_[rand()*@_]; 

然后运行以下命令发送kill命令

 kill `ps aux | grep PROCESS-NAME | perl randomline.pl | awk '{print $2}'` 

您可能还想添加一些检查,可能是反向grep for root,以确保不会尝试杀死与进程名称匹配的根级进程。

干掉awk吧

 kill $(ps -eo cmd,pid|awk '/zsh/&&!/awk/{pid[$NF]}END{for(i in pid){print i;exit}}') 

END块中的for循环会给你一个随机的pid来杀死

与最近的bash shell

 #!/bin/bash declare -a pid pid=( $(pidof myprocess) ) length=${#pid} rnumber=$((RANDOM%length+1)) rand=$((rnumber-1)) kill ${pid[$rand]} 

如何使用pgrep和pkill。 他们允许很多选项来选择进程。

杀死名为“my_proc_name”的进程:

 kill -9 `ps xf | grep my_proc_name | grep -v grep | cut -d " " -f 1` 

也许脱离主题,但我在Cygwin上使用它。 受到Lev Victorovich Priyma的回答的启发

 ps -W | awk '/calc.exe/,NF=1' | xargs kill -f 

要么

 ps -W | awk '$0~z,NF=1' z=calc.exe | xargs kill -f