如何通过其可执行文件的绝对文件路径终止进程?因此,我想杀死从给定位置的可执行文件创建的所有进程?
解答:
kill $(ps aux | grep '<absolute executable path>' | awk '{print $2}')
答案 0 :(得分:1)
您可以使用pkill(1)(或者killall(1) ...)
如果您正在编写程序,可以考虑使用proc(5)。然后,您opendir(3)然后循环readdir(3) /proc/
目录(也使用stat(2)并且不要忘记closedir(3))。有病理情况(self-removing program)。
答案 1 :(得分:-1)
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