我正在练习使用bash脚本编写这个小脚本,它应该打印所有大小超过1GB的可读文件。
#! /bin/bash
find / -size +1G -readable
当我以这种方式运行时,它显然会开始印刷大量的东西。我无法使用 Ctrl + C / Ctrl + Z 终止或中断该过程。后来我在脚本的末尾添加了&
,但它仍然不会在后台运行。
有谁知道为什么会这样?
答案 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