shell – bash中超出文件大小限制
发布时间:2020-12-15 18:36:04 所属栏目:安全 来源:网络整理
导读:我在SUSE 10服务器,内核2.6.16.60,ext3文件系统上尝试过这个 shell脚本 脚本有这样的问题: cat file | awk '{print $1" "$2" "$3}' | sort -n result 文件的大小约为3.2G,我得到这样的错误信息: 超出文件大小限制 在这个shell中,ulimit -f是无限的 在我将
我在SUSE 10服务器,内核2.6.16.60,ext3文件系统上尝试过这个
shell脚本
脚本有这样的问题: cat file | awk '{print $1" "$2" "$3}' | sort -n > result 文件的大小约为3.2G,我得到这样的错误信息: 在这个shell中,ulimit -f是无限的 在我将脚本更改为此之后 cat file | awk '{print $1" "$2" "$3}' >tmp sort -n tmp > result 问题消失了. 我不知道为什么,有人可以帮我解释一下吗?
管道版本需要更多临时文件.
您可以使用strace实用程序快速检查. 管道版本使用快速爆炸的临时文件数量: for i in {1..200000} ; do echo $i ; done |strace sort -n |& grep -e 'open.*/tmp/' open("/tmp/sortb9Mhqd",O_RDWR|O_CREAT|O_EXCL,0600) = 3 open("/tmp/sortqKOVvG",0600) = 3 open("/tmp/sortb9Mhqd",O_RDONLY) = 3 open("/tmp/sortqKOVvG",O_RDONLY) = 4 文件版本不使用同一数据集的临时文件. for i in {1..200000} ; do echo $i ; done >/tmp/TESTDATA ; strace sort -n /TMP/TESTDATA |& grep -e 'open.*/tmp/' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |