Bash脚本无限循环

时间:2016-09-30 03:02:45

标签: bash unix

我正在练习使用bash脚本编写这个小脚本,它应该打印所有大小超过1GB的可读文件。

#!  /bin/bash
find / -size +1G -readable 

当我以这种方式运行时,它显然会开始印刷大量的东西。我无法使用 Ctrl + C / Ctrl + Z 终止或中断该过程。后来我在脚本的末尾添加了&,但它仍然不会在后台运行。

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

打印到终端需要时间。当程序打印速度超过bash可以跟上时,按 CTRL + C 不会有帮助,因为所有输出都已添加到管道中。你可以在中途停止find,但由于它已经有了这么多的命中,所以即使你杀了这个过程,bash也会不断打印出管道中的内容。

添加&无法帮助,因为您的终端会话仍然由IO备份。只是因为你在后台运行一个进程并不意味着bash不会打印IO。

这是一个简单的bash脚本。使用&运行此选项,您仍然会看到1打印出来。

while [[ 1 -eq 1 ]]
do
    echo 1; sleep 1;
done

要尝试的主要方法是将IO重定向到文件。

find -------- 2> /dev/null

这将删除" Permission Denied"错误到/ dev / null。如果您以普通用户身份运行该脚本,则可能会遇到很多错误。

find ---------- 1> find.txt

这会将正面的点击放入find.txt中,这样你就可以回去看看积极的点击。和在一起,

find ---------- 2> /dev/null 1> find.txt