我使用以下Linux命令杀死所有Vim进程,
ps -ef | grep "gvim" | grep -v grep | awk '{print $2}' | xargs kill
字符串上面的命令是工作,但它输出:
Vim: Caught deadly signal TERM
型有没有其他干净的方法杀死它?
abithluo1#
只要你不介意丢失所有未保存的更改并中途停止任何后台作业,你可以使用-s选项从kill命令发送不同的信号。信号15,SIGTERM是默认的;你可以执行kill -s 9来彻底杀死进程。这里有一个很好的list of signals供参考。所以你的最终命令看起来像这样:
-s
kill
15
SIGTERM
kill -s 9
ps -ef | grep "gvim" | grep -v grep | awk '{print $2}' | xargs kill -s 9
字符串这不会产生任何关于致命信号的警告。这也是一种非常讨厌的做法,如果你有一个不平凡的Vim设置,可能会导致一些棘手的行为。正如@moopet在评论中所说的,如果你将命令的输出重定向到/dev/null,你仍然可以使用SIGTERM。这不会比SIGKILL好到哪里去,因为Vim不会自动保存你的文件,但它可能会给给予它正在做的任何后台任务一些时间来清理。或者,如果你愿意改变你的设置,你可以把Vim作为一个服务器运行,并从终端向它发出保存和关闭命令。
/dev/null
SIGKILL
64jmpszr2#
我用这个来找到并杀死Vim进程。
ps axuw | grep vim | grep -v grep | awk '{print $2}' | xargs kill -9
字符串下面是上面命令中每个步骤的细分:ps axuw #列出您PC上的所有进程。grep vim #仅列出运行Vim的进程。grep -v grep #删除包含“grep”的进程,“-v”选项显示与指定模式不匹配的行。awk '{print $2}' #打印Vim进程的进程id,第二列.“* awk”-允许传递命令(例如:print)。“$2”是传递给打印第二列的参数,因为它实际上是“print”命令返回的结果集中的第二个参数。在“awk”中,您还可以设置一个模式,以确保该命令仅适用于遵循它的进程(例如:awk '/manager/ {print}' employee.txt;它只会打印标题为“经理”的员工(不确定它是在寻找精确匹配还是只是一个关键字,不过;请随时测试它)。xargs kill -9 #终止进程;构建并执行通过标准输入提供的命令;“-9“是'kill *'信号的索引。要查找信号编号,请运行kill -l命令
ps axuw
grep vim
grep -v grep
awk '{print $2}'
awk
$2
print
awk '/manager/ {print}' employee.txt
xargs kill -9
-9
kill -l
2条答案
按热度按时间abithluo1#
只要你不介意丢失所有未保存的更改并中途停止任何后台作业,你可以使用
-s
选项从kill
命令发送不同的信号。信号15
,SIGTERM
是默认的;你可以执行kill -s 9
来彻底杀死进程。这里有一个很好的list of signals供参考。所以你的最终命令看起来像这样:
字符串
这不会产生任何关于致命信号的警告。这也是一种非常讨厌的做法,如果你有一个不平凡的Vim设置,可能会导致一些棘手的行为。
正如@moopet在评论中所说的,如果你将命令的输出重定向到
/dev/null
,你仍然可以使用SIGTERM
。这不会比SIGKILL
好到哪里去,因为Vim不会自动保存你的文件,但它可能会给给予它正在做的任何后台任务一些时间来清理。或者,如果你愿意改变你的设置,你可以把Vim作为一个服务器运行,并从终端向它发出保存和关闭命令。
64jmpszr2#
我用这个来找到并杀死Vim进程。
字符串
下面是上面命令中每个步骤的细分:
ps axuw
#列出您PC上的所有进程。grep vim
#仅列出运行Vim的进程。grep -v grep
#删除包含“grep”的进程,“-v”选项显示与指定模式不匹配的行。awk '{print $2}'
#打印Vim进程的进程id,第二列.“*
awk
”-允许传递命令(例如:print)。“$2
”是传递给打印第二列的参数,因为它实际上是“print
”命令返回的结果集中的第二个参数。在“awk
”中,您还可以设置一个模式,以确保该命令仅适用于遵循它的进程(例如:awk '/manager/ {print}' employee.txt
;它只会打印标题为“经理”的员工(不确定它是在寻找精确匹配还是只是一个关键字,不过;请随时测试它)。xargs kill -9
#终止进程;构建并执行通过标准输入提供的命令;“-9
“是'kill
*'信号的索引。要查找信号编号,请运行kill -l
命令