我正在寻找一个快速的终端命令,将杀死所有的进程正在运行从一个特定的目录(或该目录的子目录)。例如,假设我运行bin1和bin2可执行文件,它们位于以下路径:/path/to/processes/subdir1/bin1/path/to/processes/subdir2/subsubdir2/bin2我想通过只指定/path/to/processes来同时终止bin1和bin2,这样命令就可以根据位置找到并终止bin1和bin2。
bin1
bin2
/path/to/processes/subdir1/bin1
/path/to/processes/subdir2/subsubdir2/bin2
/path/to/processes
vfhzx4xs1#
一种方法是说:
ps --no-headers axk comm o pid,args | awk '$2 ~ "/path/to/processes/"{print $1}' | xargs kill -9
ubbxdtey2#
老问题我知道,但我遇到了这个寻找答案,并最终找到了一个。我不知道这是否是“最佳”的方式来做到这一点或没有,但你必须从某处开始,我发现这是非常可靠的:
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
while read line; do pwdx $line 2> /dev/null; done
2> /dev/null
cut -d':' -f1
while read line; do kill $line; done;
koaltpgm3#
我使用此命令来终止特定目录中的进程:
lsof | grep '\/path\/to\/processes\/' | awk '{print $2}' | xargs kill
3条答案
按热度按时间vfhzx4xs1#
一种方法是说:
ubbxdtey2#
老问题我知道,但我遇到了这个寻找答案,并最终找到了一个。我不知道这是否是“最佳”的方式来做到这一点或没有,但你必须从某处开始,我发现这是非常可靠的:
ps -eo pid
:列出所有进程IDwhile read line; do pwdx $line 2> /dev/null; done
:获取有关每个进程的更多信息,包括运行该进程的目录2> /dev/null
:删除有关您没有权限的进程的错误行(可选)cut -d':' -f1
仅提取PIDwhile read line; do kill $line; done;
:通过pid终止每个进程koaltpgm3#
我使用此命令来终止特定目录中的进程: