我正在使用以下 Linux 命令来终止所有 vim 进程,
ps -ef | grep "gvim" | grep -v grep | awk '{print $2}' | xargs kill
上面的命令正在工作,除了输出:
Vim: Caught deadly signal TERM
还有另一种干净的方法来杀死它吗?
最佳答案
只要您愿意丢失所有未保存的更改并停止任何后台作业,您就可以使用 -s
选项从 kill
命令发送不同的信号。信号 15
、SIGTERM
是默认信号;您可以执行 kill -s 9
来彻底杀死进程。这是一个很好的list of signals供引用。
所以你的最终命令将如下所示:
ps -ef | grep "gvim" | grep -v grep | awk '{print $2}' | xargs kill -s 9
这不会生成任何有关致命信号的警告。这也是一种非常讨厌的做事方式,如果你有一个不平凡的 vim 设置,可能会导致一些粗糙的行为。
正如 @moopet 在评论中所说,如果将命令的输出重定向到 /dev/null
,您仍然可以使用 SIGTERM
。这不会比 SIGKILL
更好,因为 Vim 不会自动保存你的文件,但它可能会给正在执行的任何后台任务一些时间来清理。
或者,如果您愿意更改设置,您始终可以将 vim 作为服务器运行,并从终端向其发出保存并关闭命令。 Vim SE site 有一个很好的解释.
关于linux - 从其他选项卡彻底杀死所有 vim 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58313513/