如何杀死linux上的running for循环?

时间:2012-05-07 09:12:31

标签: linux pid

我在Linux上工作,  我在Linux终端上执行了for循环,如下所示:

for i in `cat fileName.txt`
do
echo $i
vim $i
done

fileName.txt是一个文件,其中包含我在vim编辑器中逐个打开的大量文件条目。现在我必须跳过打开其他文件。(即我必须打破for循环)。有什么建议如何获得运行for循环的PID?并杀了同样的。 提前谢谢。

4 个答案:

答案 0 :(得分:10)

您想要杀死正在运行的作业。按 Ctrl Z 。 Bash会显示如下内容:

[1]+  Stopped                 vim $i

将该号码与kill一起发送KILL信号:

kill -9 %1

然后它应该被杀死:

[1]+  Killed                  vim $i

答案 1 :(得分:1)

这也可以解决问题:

while true ; do killall vim ; done

你可以像往常一样用^ C中止这个。

答案 2 :(得分:1)

找到vim进程父进程的进程id(PID),它应该是执行for循环的shell。尝试使用“pstree -p”。然后,使用“kill”杀死该进程id。

答案 3 :(得分:0)

要终止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