Joh*_*uer 6 kill process-management files
这会使用文件 /foo/bar 的句柄(在 bash 中)杀死每个进程:
lsof /foo/bar 2>&1 | grep "/foo/bar" | sed "s/ */\\t/g" | cut -f 2 | while read PID; do kill $PID; done
Run Code Online (Sandbox Code Playgroud)
这似乎不是一个不常见的任务,不会有更简单的解决方案,所以我想知道是否有类似的东西killall
或kill
我错过的切换到相同的东西。
这-t
就是为了。手册页甚至建议您将其用于kill
.
lsof -t /some/file | xargs kill
Run Code Online (Sandbox Code Playgroud)
传统上(之前lsof
),你会使用:
fuser /some/file 2> /dev/null | xargs kill
Run Code Online (Sandbox Code Playgroud)
为了那个原因。
一些fuser
实现,比如大多数基于 Linux 的操作系统、Solaris 或最新的 FreeBSD 上的实现,甚至可以自己完成:
fuser -k /some/file
Run Code Online (Sandbox Code Playgroud)
但是请注意,他们发送的是 SIGKILL,而不是 SIGTERM。您可以-TERM
使用某些实现和-s TERM
其他实现选择不同的信号。