我想杀死所有我通过的进程:
ps aux | grep my_pattern
怎么做?
这不起作用:
pkill my_pattern
我想杀死所有我通过的进程:
ps aux | grep my_pattern
怎么做?
这不起作用:
pkill my_pattern
当前回答
听起来很糟糕?
pkill `pidof myprocess`
例子:
# kill all java processes
pkill `pidof java`
其他回答
最好和最安全的做法是将pgrep-f与kill一起使用,或者只使用pkill-f,greping ps的输出可能会出错。
与使用ps|grep(需要通过添加|grep-v或使用模式技巧来过滤掉grep行)不同,pgrep只是不会自行设计。
此外,如果你的模式出现在ps的UID/USER、SDATE/START或任何其他列中,你会在输出中得到不需要的进程并杀死它们,pgrep+pkill不会受到这个缺陷的影响。
我还发现killall-r/-regexp不能与正则表达式一起使用。
pkill-f“^python3路径/to/my_script$”
男子pkill
如果您在选择流程时需要更多的灵活性,请使用
for KILLPID in `ps ax | grep 'my_pattern' | awk ' { print $1;}'`; do
kill -9 $KILLPID;
done
您可以使用grep-e等。
可以使用以下命令:
ps -ef | grep -i myprocess | awk {'print $2'} | xargs kill -9
or
ps -aux | grep -i myprocess | awk {'print $2'} | xargs kill -9
这对我有用。
我接受了Eugen Rieck的答案并进行了处理。我的代码添加了以下内容:
ps-ax包含grep,所以我用grep-Eiv“grep”排除了它添加了一些“如果”和“回声”,使其具有可读性。
我创建了一个名为killseerver的文件,如下所示:
#!/bin/bash
PROCESS_TO_KILL=bin/node
PROCESS_LIST=`ps ax | grep -Ei ${PROCESS_TO_KILL} | grep -Eiv 'grep' | awk ' { print $1;}'`
KILLED=
for KILLPID in $PROCESS_LIST; do
if [ ! -z $KILLPID ];then
kill -9 $KILLPID
echo "Killed PID ${KILLPID}"
KILLED=yes
fi
done
if [ -z $KILLED ];then
echo "Didn't kill anything"
fi
后果
➜ myapp git:(master) bash killserver
Killed PID 3358
Killed PID 3382
Killed
➜ myapp git:(master) bash killserver
Didn't kill anything
如果你认为pkill-f模式有点太危险,我编写了一个bash脚本,提示你在那些与你想要杀死的模式匹配的进程中选择哪个进程。
警告:不再维护此项目。