我想要一个杀死随机过程的方法(例如,一个随机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