我在 Linux 上工作,我在 Linux 终端上执行了 for 循环,如下所示:
for i in `cat fileName.txt`
do
echo $i
vim $i
done
fileName.txt 是一个文件,其中包含我在 vim 编辑器中一一打开的大量文件条目。现在我必须跳过在两者之间打开其他文件。(即我必须打破 for 循环)。任何建议如何获得运行循环的PID?并杀死同样的。提前致谢。
You want to kill the running job. Press CtrlZ. Bash will show something like:
[1]+ Stopped vim $i
Use that number with kill
to send the KILL
signal:
kill -9 %1
and it should be killed afterwards:
[1]+ Killed vim $i
这也可以解决问题:
while true ; do killall vim ; done
你可以像往常一样用 ^C 中止这个。
找到vim进程的父进程的进程id(PID),应该是执行for循环的shell。尝试使用“pstree -p”。然后,使用“kill”杀死该进程ID。
要终止 vim 进程的创建,您必须停止 for 循环。此循环由 bash 进程管理。所以找到进程的PID并杀死它。为此,请找到 vim 进程的 PPID,即其父进程的 PID,然后终止父进程:
ps -elf | tr -s ' ' | grep vim | cut -f5 -d ' ' | xargs kill
您可以将此命令与第二个命令一起使用,这将杀死所有 vim 进程,以确保没有 vim 实例保留:
ps -elf | tr -s ' ' | grep vim | cut -f4 -d ' ' | xargs kill
我看到您遇到了“不允许的权限”的问题。这可能是由于缺少权限造成的,因此为了确保它会终止进程,您可以使用 sudo 调用 xargs kill :ps -elf | tr -s ' ' | grep vim | cut -f5 -d ' ' | sudo xargs kill