我在Linux上工作, 我在Linux终端上执行了for循环,如下所示:
for i in `cat fileName.txt`
do
echo $i
vim $i
done
fileName.txt是一个文件,其中包含我在vim编辑器中逐个打开的大量文件条目。现在我必须跳过打开其他文件。(即我必须打破for循环)。有什么建议如何获得运行for循环的PID?并杀了同样的。 提前谢谢。
答案 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