1

我正在寻找一个快速的终端命令,它将杀死从特定目录(或该目录的子目录)运行的所有进程。

例如,假设我正在运行bin1bin2可执行文件。他们生活在以下路径:

/path/to/processes/subdir1/bin1

/path/to/processes/subdir2/subsubdir2/bin2

我想杀死 bin1 和 bin2 只指定/path/to/processes这样的命令将找到并杀死两者bin1bin2因为它们的位置。

4

3 回答 3

0

一种方法是说:

ps --no-headers axk comm o pid,args | awk '$2 ~ "/path/to/processes/"{print $1}' | xargs kill -9
于 2013-10-17T17:36:17.497 回答
0

我使用这个命令来杀死特定目录中的进程:

lsof | grep '\/path\/to\/processes\/' | awk '{print $2}' | xargs kill
于 2020-07-21T18:00:05.037 回答
0

我知道的老问题,但我在寻找答案时遇到了这个问题并最终找到了答案。我不知道这是否是执行此操作的“最佳”方式,但您必须从某个地方开始,我发现这非常可靠:

ps -eo pid | while read line; do pwdx $line 2> /dev/null; done | grep "your/path/here" | cut -d':' -f1 | while read line; do kill $line; done;
  • ps -eo pid: 列出所有进程 ID
  • while read line; do pwdx $line 2> /dev/null; done: 获取有关每个进程的更多信息,包括运行它的目录
  • 2> /dev/null:删除有关您无权访问的进程的错误行(可选)
  • cut -d':' -f1仅提取 pid
  • while read line; do kill $line; done;: 通过 pid 杀死每个进程
于 2019-12-11T18:06:45.843 回答