Linux - 按路径

时间:2017-11-29 19:50:32

标签: linux process executable kill

如何通过其可执行文件的绝对文件路径终止进程?因此,我想杀死从给定位置的可执行文件创建的所有进程?

解答:

kill $(ps aux | grep '<absolute executable path>' | awk '{print $2}')

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