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