如何通过可执行文件的绝对路径杀死一个进程?因此,我想要杀死所有从给定位置创建的可执行文件所产生的进程。
回答:
kill $(ps aux | grep '<absolute executable path>' | awk '{print $2}')
如何通过可执行文件的绝对路径杀死一个进程?因此,我想要杀死所有从给定位置创建的可执行文件所产生的进程。
回答:
kill $(ps aux | grep '<absolute executable path>' | awk '{print $2}')
function killpath {
ps aux | awk '{print $2"\t"$11}' | grep -E '^\d+\t'"$1"'$' | awk '{print $1}' | xargs kill -SIGTERM
}
使用方法:
killpath /Applications/Waterfox.app/Contents/MacOS/waterfox
功能:
ps aux
:列出进程awk '{print $2"\t"$11}'
:获取第 2
列(PID)和第 11
列(可执行文件),并用一个 \t
制表符分隔它们grep -E '^\d+\t'"$1"'$'
:匹配正则表达式
^
:行开头\d+
:一个或多个数字\t
:之前介绍过的制表符"$1"
函数的输入,例如:/Applications/Waterfox.app/Contents/MacOS/waterfox
$
:行结尾awk '{print $1}'
:只获取第 1
列,也就是进程 ID。xargs
:将换行符转换为空格以下是数据的示例:
# killpath /Applications/Waterfox.app/Contents/MacOS/waterfox
# ps aux
# USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
luckydonald 23265 04,6 10,3 9222008 1736020 ?? S Sat10am 45:48.77 /Applications/Waterfox.app/Contents/MacOS/waterfox -foreground
luckydonald 23266 02,0 05,3 5743400 362344 ?? R Sat10am 11:52.52 /Applications/Waterfox.app/Contents/MacOS/waterfox -foreground
luckydonald 42128 04,5 00,2 4337884 35608 s002 S+ 1:17am 0:06.84 /usr/local/Cellar/docker-compose/1.23.2/libexec/bin/python3.7 /usr/local/bin/docker-compose logs -f --tail 100 r2tg
# awk '{print $2"\t"$11}'
23265 /Applications/Waterfox.app/Contents/MacOS/waterfox
23266 /Applications/Waterfox.app/Contents/MacOS/waterfox
42128 /usr/local/Cellar/docker-compose/1.23.2/libexec/bin/python3.7
# 1="/Applications/Waterfox.app/Contents/MacOS/waterfox"
# grep -E '^\d+\t'"$1"'$'
23265 /Applications/Waterfox.app/Contents/MacOS/waterfox
23266 /Applications/Waterfox.app/Contents/MacOS/waterfox
# awk '{print $1}'
23265
23266
# xargs
23265 23266
# xargs kill -SIGTERM
kill -SIGTERM 23265 23266
答案:
kill $(pgrep -f /absolute/executable/path)
/proc/
目录上循环readdir(3)(还要使用stat(2),不要忘记closedir(3))。存在病态情况(一个self-removing program)。在搜索了很多之后,没有找到任何有效的解决方案。 我解决了我的问题,也许对你有用。
如果有多个具有相同名称但不同位置的应用程序,那么首先通过提供完整路径来找出进程ID。 假设有两个正在运行的应用程序,它们的位置分别是:
(printMsg是应用程序的名称。) 如果我们想关闭第一个应用程序,可以使用以下命令:
kill $(pidof "/home/ubuntu/Sachin/printMsg")
解释:
命令pidof "/home/ubuntu/Sachin/printMsg"
返回进程ID。使用该进程ID,我们可以使用kill命令关闭应用程序。