为什么 GNU sort 会在这个特定文件上挂起 10 个小时以上
Why could GNU sort be hanging for 10 hours+ on this specific file
我正在尝试使用 Ubuntu 18 lts 附带的 gnu 排序来合并和删除同种纯文本文件的几个不同版本。我几乎每天都使用排序,对 1gb+ 大小的文件排序没有问题。
但是,我有以下命令,当我让它在后台运行 10 小时(总共约 600mb 数据)时仍然无法完成:
find backups -type f -iname 'file0.txt' -o -iname 'file1.txt' -o -iname 'file2.txt' -o -iname 'file3.txt' -exec sort -u {} + > "combined.txt"
排序部分是导致问题的原因,命令的其余部分与我的测试无关。我将所有文件分类为一个 ~600 MB 的文件,当我尝试对这个文件进行排序时,即使将内存缓冲区设置为 80% 且有大约 6GB 的可用内存,它仍然会永远挂起。我的磁盘 space.
也没有问题
虽然它仍然是 运行,但我已经拖入了一个未排序的 3gb 文本文件并成功对其进行了排序。如果可能的话,我正在虚拟机中执行此操作。
什么会导致这种行为?
在发出排序命令之前设置 LC_ALL=C 或在脚本文件开头的 shebang 下导出 LC_ALL=C 解决了它。不确定为什么上次更新添加到文本文件的特定文本会导致命令在没有 LC_ALL=C 的情况下永远卡住。
我正在尝试使用 Ubuntu 18 lts 附带的 gnu 排序来合并和删除同种纯文本文件的几个不同版本。我几乎每天都使用排序,对 1gb+ 大小的文件排序没有问题。
但是,我有以下命令,当我让它在后台运行 10 小时(总共约 600mb 数据)时仍然无法完成:
find backups -type f -iname 'file0.txt' -o -iname 'file1.txt' -o -iname 'file2.txt' -o -iname 'file3.txt' -exec sort -u {} + > "combined.txt"
排序部分是导致问题的原因,命令的其余部分与我的测试无关。我将所有文件分类为一个 ~600 MB 的文件,当我尝试对这个文件进行排序时,即使将内存缓冲区设置为 80% 且有大约 6GB 的可用内存,它仍然会永远挂起。我的磁盘 space.
也没有问题虽然它仍然是 运行,但我已经拖入了一个未排序的 3gb 文本文件并成功对其进行了排序。如果可能的话,我正在虚拟机中执行此操作。
什么会导致这种行为?
在发出排序命令之前设置 LC_ALL=C 或在脚本文件开头的 shebang 下导出 LC_ALL=C 解决了它。不确定为什么上次更新添加到文本文件的特定文本会导致命令在没有 LC_ALL=C 的情况下永远卡住。