【问题标题】:How do I kill all processes running from a particular directory?如何杀死从特定目录运行的所有进程?
【发布时间】:2013-10-17 17:15:57
【问题描述】:

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

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

/path/to/processes/subdir1/bin1

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

我想通过仅指定 /path/to/processes 来杀死 bin1 和 bin2,这样该命令将找到并杀死 bin1bin2,因为它们的位置。

【问题讨论】:

    标签: bash shell command-line kill


    【解决方案1】:

    一种方法是说:

    ps --no-headers axk comm o pid,args | awk '$2 ~ "/path/to/processes/"{print $1}' | xargs kill -9
    

    【讨论】:

      【解决方案2】:

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

      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 仅提取 pids
      • while read line; do kill $line; done;: 通过pid杀死每个进程

      【讨论】:

        【解决方案3】:

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

        lsof | grep '\/path\/to\/processes\/' | awk '{print $2}' | xargs kill
        

        【讨论】:

          猜你喜欢
          • 2023-03-11
          • 2018-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-19
          • 1970-01-01
          相关资源
          最近更新 更多