gpt4 book ai didi

有选择地终止进程的 Linux 脚本

转载 作者:太空狗 更新时间:2023-10-29 11:04:15 25 4
gpt4 key购买 nike

我正在寻找一种自动化以下操作的方法:

  1. 运行 ps -ef列出所有进程。
  2. 过滤掉那些包含 java 的行在CMD专栏。
  3. 过滤掉那些包含 root 的行在UID专栏。
  4. 对于过滤后的每一行,获取 PID列并运行 pargs <PID> .
  5. 如果pargs <PID>的输出包含特定字符串 XYZ , 问题 kill -9 <PID>命令。

要根据特定列值过滤掉行,有没有比 grep 更好的方法? ?我可以用

ps -ef | awk '{print $1}' | grep <UID>

但随后我丢失了所有其他列的信息。我现在最接近的是:

ps -ef | grep java | grep root | grep -v grep | xargs pargs | ?????

编辑

我能够通过使用以下脚本解决问题:

ps -ef | awk '/[j]ava/ && /root/ {print $2}' | while read PID; do
pargs "$PID" | grep "Args" > /dev/null && kill -9 $PID && echo "$PID : Java process killed!"
done

两者都是anubhava的和kojiro的答案帮助我到达那里。但是因为我只能接受一个答案,所以我标记了kojiro的答案是正确的,因为它帮助了我更多。

最佳答案

考虑pgrep:

pgrep -U 0 java | while read pid; do
pargs "$pid" | grep -qF XYZ && kill "$pid"
done

pgreppkill 在许多 Linux 系统上可用,并且作为 *BSD 和 OS X 的“proctools”包的一部分。

关于有选择地终止进程的 Linux 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28259527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com