如何终止具有给定部分名称的所有进程?[关闭]
- 2024-10-18 09:00:00
- admin 原创
- 74
问题描述:
我想通过以下方式终止所有进程:
ps aux | grep my_pattern
如何做?
这不起作用:
pkill my_pattern
解决方案 1:
使用pkill -f
,它与命令行任何部分的模式匹配
pkill -f my_pattern
如果它不起作用,请尝试使用这个:
pkill -9 -f my_pattern
解决方案 2:
终止所有与字符串“myProcessName”匹配的进程:
ps -ef | grep 'myProcessName' | grep -v grep | awk '{print $2}' | xargs -r kill -9
来源: http: //www.commandlinefu.com/commands/view/1138/ps-ef-grep-process-grep-v-grep-awk-print-2-xargs-kill-9
为什么从终端执行“ps pipe kill”是邪恶的:
ps -ef
您从中抓取的整数的管道kill -9
很糟糕,您应该感到很糟糕,如果您是 root 或具有提升权限的用户,则感觉会更加糟糕,因为它没有给您的进程机会干净地关闭套接字连接、清理临时文件、通知其子进程它即将消失或重置其终端特性。
而是发送 15,然后等待一两秒,如果不奏效,则发送 2,如果还不行,则发送 1。如果还不行,则删除该二进制文件,因为程序行为不当。
一般来说,我们不使用 Unix Railgun 来修剪树篱。https ://porkmail.org/era/unix/award.html#kill
上述命令的解释:
ps -ef
生成此用户可见的计算机上的进程 ID 列表。管道 grep 过滤出包含该字符串的行。saysgrep -v grep
与执行 grepping 的进程本身不匹配。管道 awk print says 根据默认分隔符空格拆分行并过滤到第二列,即我们的进程 ID。管道 xargs 启动一个新进程以将所有这些 pid 发送到kill -9
,结束所有进程。
为什么ps pipe kill
它不好、危险、丑陋、粗俗:
有小概率您会意外结束操作系统或在不相关的进程中引起未定义的行为,从而导致整个系统不稳定,因为
ps -ef
列出了数千个进程,并且您不能确定某些第三方进程是否共享您的进程名称,或者在读取和执行 kill -9 之间的时间内,processid 已更改为其他内容,而现在您已经结束了一些与您无关的随机必要进程。如果被强制结束的代码正在执行任何数据库操作或具有低概率竞争条件的安全事务,那么在百分之几的时间内,该事务的原子性将被破坏,从而产生未定义的行为。 kill -9 不会俘获任何囚犯。如果您的代码对此很敏感,请尝试
xargs kill
用请求正常关闭的传输标志替换该部分,并且只有当该请求被拒绝时,才采取最后的手段kill -9
但是,如果您了解所有风险并使用唯一名称对其进行控制,并且您可以接受一些交易丢失或偶尔出现损坏,那么 99.9% 的时间您都会没事。如果出现问题,请重新启动计算机,确保没有任何进程冲突。正是由于这样的代码,技术支持脚本:“您是否尝试过重新启动计算机”成为了 5 级模因。“流氓机器人抓取ps
整数并将其发送到kill -9
,因此重新启动计算机以解决问题。
为什么不直接使用pkill
更简单的呢?
以上内容让我可以手动控制,因为、 、ps
和grep
是多平台标准。它可以完全控制要使用哪个正则表达式引擎、要匹配进程名称的哪一部分、处理大小写敏感性和异常管理。awk
`kill`xargs
pkill -f -e -c myProcessName
对我来说也是一样,但man pkill
Linux、Mac、Zune-Bash 和我的开源路由器的变体之间有不同的行为、标志和正则表达式引擎。所以,是的,把你的 35000 瓦 Unix-Railgun 交给 pkill 来修剪篱笆。看看会发生什么。
一次 grepping
您可以用方括号代替grep -v grep |
kill 命令首字母,这可以达到相同的效果并防止 grep 对自身进行 grep 命令,例如:
ps -ef | grep '[m]yProcessName' | awk '{print $2}' | xargs -r kill -9
为什么有效:
https: //askubuntu.com/questions/153419/how-does-this-tricky-bracket-expression-in-grep-work
解决方案 3:
如果您需要更灵活地选择流程,请使用
for KILLPID in `ps ax | grep 'my_pattern' | awk ' { print $1;}'`; do
kill -9 $KILLPID;
done
您可以使用 grep -e 等。
解决方案 4:
您可以使用以下命令列出进程
ps aux | grep -c myProcessName
如果你需要检查该进程的数量,那么运行
ps aux | grep -c myProcessName |grep -v grep
之后你可以使用
kill -9 $(ps aux | grep -e myProcessName | awk '{ print $2 }')
解决方案 5:
您还可以使用killall -r my_pattern
。-r
将进程名称模式解释为扩展的正则表达式。
killall -r my_pattern
解决方案 6:
如果您判断pkill -f PATTERN
这有点太危险,我编写了一个 bash 脚本ezkill,它会提示您在符合 PATTERN 的进程中选择要终止的进程。
警告:该项目不再维护。
解决方案 7:
您可以使用以下命令来
kill -9 $(ps aux | grep 'process' | grep -v 'grep' | awk '{print $2}')
解决方案 8:
如果您不想费心寻找进程 ID,请使用正则表达式按名称终止进程。例如,要终止 chrome,以下代码即可。
killall --regexp chrome
解决方案 9:
找到了对不支持的服务器执行此操作的最佳方法pkill
kill -9 $(ps ax | grep My_pattern| fgrep -v grep | awk '{ print $1 }')
您不必循环。
解决方案 10:
方法如下:
kill -9 $(pgrep -d' ' -f chrome)
pgrep 搜索所有相关的进程chrome
并以空格分隔的列表返回它们。
这将传递给kill
可以安全地执行kill
所有相关chrome
进程的应用程序。
这还是很危险的,要小心。
解决方案 11:
您可以使用以下命令来:
ps -ef | grep -i myprocess | awk {'print $2'} | xargs kill -9
或者
ps -aux | grep -i myprocess | awk {'print $2'} | xargs kill -9
它对我有用。
解决方案 12:
听起来很糟糕?
pkill `pidof myprocess`
例子:
# kill all java processes
pkill `pidof java`
解决方案 13:
最好且最安全的是使用pgrep -f
,kill
或者只是pkill -f
,grep
ingps
的输出可能会出错。
与使用不同,您需要通过添加或使用模式技巧ps | grep
来过滤掉 grep 行,而它不会根据设计自行选择。| grep -v
`pgrep`
此外,如果您的模式出现在 /、/ 或任何其他列中ps
,UID
您将在输出中得到不需要的进程并终止它们,+USER
不会受到这个缺陷的影响。SDATE
`STARTpgrep
pkill`
我还发现killall -r
/ -regexp
不适用于我的正则表达式。
pkill -f "^python3 path/to/my_script$"
您可以通过此链接pkill
阅读手册。man pkill
解决方案 14:
我采纳了 Eugen Rieck 的答案并进行了研究。 我的代码添加了以下内容:
ps ax
包括 grep,所以我用grep -Eiv 'grep'
添加了一些 if 和 echo 以使其更易于阅读。
我创建了一个文件,将其命名为killserver
,内容如下:
#!/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
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件