我正在尝试使用Ubuntu 18 lts附带的gnu sort合并和删除相同类型的纯txt文件的几种不同版本。我几乎每天都使用排序,而排序大小为1gb +的文件没有问题。
但是,当我在后台将其放置10个小时(总共约600 mb的数据)时,我仍然无法完成以下命令:
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的单个文件中,当我尝试对-u这个文件进行排序时,即使将内存缓冲区设置为80%(大约6gb可用内存)时,它仍然永远挂起。我的磁盘空间也没有问题。
虽然它仍在运行,但我已将未排序的3gb文本文件拖入并成功对-u进行了排序。如果可能的话,我正在虚拟机中执行此操作。
什么可能导致此行为?
在发出排序命令之前设置LC_ALL = C或在脚本文件的开头将shebbang导出LC_ALL = C即可解决该问题。不知道为什么最后一次更新添加到文本文件中的特定文本会导致该命令在没有LC_ALL = C的情况下永久卡住。