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

yea*_*yea 5 linux bash shell working-directory kill-process

我需要一种方法来杀死当前目录中正在运行的所有内容。我对 shell 有点陌生,所以请原谅我的愚蠢或可能不理解你的答案。我的理解还算不错,但如果您愿意花额外的时间来解释一下您对我的问题的解决方案到底是做什么的,我将不胜感激。

0.s*_*.sh 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
Run Code Online (Sandbox Code Playgroud)

  • 为什么要自己推出而不是使用“fuser -k”? (7认同)
  • (顺便说一句,最好使用“$PWD”——比“$(pwd)”更有效*和*正确)。 (4认同)
  • @0.sh - 实际上,`fuser`命令是[POSIX.1](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/fuser.html)的一部分,所以它不仅仅是一个linux命令。当您学习时,请记住,世界不仅仅是 Linux。当您编写工具时,请考虑是否要努力使它们可移植。 (2认同)
  • (如果这不会让我听起来像个伪君子,因为我对无法正确处理异常但合法的文件名的程序有错误采取一贯的强硬路线,我也很想争辩说,那些忽略 POSIX 指导的人对于应用程序定义的变量,坚持使用小写字符的名称是值得的)。 (2认同)