我正在寻找一个快速终端命令,它会杀死从特定目录(或该目录的子目录)运行的所有进程。
例如,假设我运行了bin1
和bin2
个可执行文件。他们住在以下路径:
/path/to/processes/subdir1/bin1
/path/to/processes/subdir2/subsubdir2/bin2
我想通过仅指定/path/to/processes
来杀死bin1和bin2,这样命令会找到并杀死bin1
和bin2
因为它们的位置。
答案 0 :(得分:0)
一种方法是说:
ps --no-headers axk comm o pid,args | awk '$2 ~ "/path/to/processes/"{print $1}' | xargs kill -9
答案 1 :(得分:0)
我知道一个老问题,但是我偶然发现了这个问题,并找到了答案。我不知道这是否是执行此操作的“最佳”方法,但是您必须从某个地方开始,我发现这非常可靠:
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杀死每个进程答案 2 :(得分:0)
我使用此命令杀死特定目录中的进程:
lsof | grep '\/path\/to\/processes\/' | awk '{print $2}' | xargs kill