有没有办法杀死在某个目录中运行的所有进程?

时间:2017-10-05 00:28:03

标签: linux bash shell kill-process working-directory

我需要一种方法来杀死当前目录中运行的所有内容。我对shell很新,所以原谅我是愚蠢的,或者可能不理解你的答案。我有一个不太合适的把握,但是如果你需要花些额外的时间来解释你的问题的确切解决方案,那将非常感激。

2 个答案:

答案 0 :(得分:0)

你必须使用lsof命令然后参数将是你要杀死进程的目录

#!/usr/bin/env bash                                                                                                                                 
lsof $(pwd) | \                                                           
    awk -F " " ' { print $2 } ' | \                                       
    while read process ; do                                               
       [[ ${process} == "PID" ]] && continue;
          # kill the processes here
          # if you assign each process to a variable or an array
          # you will not be able to access it after leaving this while loop
          # pipes are executed as subshells
          echo ${process};                                                 
     done

答案 1 :(得分:0)

短语“在目录中运行”可能以不同的方式解释,其中一些是: (1)程序是从此目录启动的, (2)程序使用此目录作为工作目录,或 (3)程序以任何方式访问此目录。

您很可能遇到了问题(3),并且已经给出了答案:使用

$热熔器-k

但是要小心,它可能会杀死比预期更多的东西!

对于问题(1),我将搜索流程环境

$ grep -l“ / home /用户名/目录” / proc / * / environ | grep -o [0-9] *

并杀死结果进程。