在bash中,如何将无限输出流重定向到文件?

在bash中,如何将无限输出流重定向到文件?,bash,file,io-redirection,Bash,File,Io Redirection,作为实验,我重定向了yes的输出,这是一个命令,如下所示: yes > a.txt 我在一瞬间用Ctrl+C中断了这个过程,但即使在这么短的时间内,a.txt的大小也只有几百兆字节 因此,我有几个问题: 如何在如此短的时间内生成如此大的文件?是否存在写入速度限制,尤其是在我正在使用的硬盘上 当我无意中重定向了一个带有无止境循环的程序的输出时,如何避免这种情况 假设上述过程长期有效。最终是否会填满所有存储空间,或者bash、OS等是否设置了任何“安全措施” 输出暂时保存在内核缓冲区中。当你

作为实验,我重定向了
yes
的输出,这是一个命令,如下所示:

yes > a.txt
我在一瞬间用Ctrl+C中断了这个过程,但即使在这么短的时间内,a.txt的大小也只有几百兆字节

因此,我有几个问题:

  • 如何在如此短的时间内生成如此大的文件?是否存在写入速度限制,尤其是在我正在使用的硬盘上

  • 当我无意中重定向了一个带有无止境循环的程序的输出时,如何避免这种情况

  • 假设上述过程长期有效。最终是否会填满所有存储空间,或者bash、OS等是否设置了任何“安全措施”


  • 输出暂时保存在内核缓冲区中。当你的内存被填满时,写入速度会减慢到硬盘速度,而硬盘速度仍然相当快


    大多数Unix文件系统为根进程保留一定百分比的空间。通过比较
    df
    sudo-df
    的输出,可以看出这一点。但是,除非您启用了用户配额,否则您肯定可以像这样使用所有磁盘空间。幸运的是,
    rm
    命令行工具不需要消耗磁盘存储来完成其工作。

    对一个人来说,一秒钟就是上千代的计算历史。我们在1000代人的时间里写了多少本书?计算机按你说的去做。这是件好事。如果你不想制作大文件,不要告诉他们制作大文件。你是程序员。也就是说,大多数OSs支持每个用户和/或每个进程的资源限制。为您正在使用的系统探索这些。(你没提那件事。仅仅因为它在内存中并不意味着数据已经进入磁盘。2.设置进程限制(例如bash有
    ulimit-f
    )3。它可能会填充到SSD上—事情发生得非常快……使用ext4,您可以使用
    -m reserved blocks percentage
    选项控制创建文件系统时的保留百分比。(检查
    man mkfs.yourfs
    以确定
    yourfs
    的可用性)FWIW,
    rm
    可能会失败,如果您有一个文件系统,如ZFS或BTRFS,它在写入时进行复制,如果您在先前创建任何快照后填充磁盘。。。