我正在尝试sort
在 Linux 中创建一个巨大的列表(130 Gb)。部分是这样的:
@K00188:14:H2LMFBBXX:6:1101:27440:1668 1:N:0:0_I_CGATGT
@K00188:14:H2LMFBBXX:6:1101:30262:1668 1:N:0:0_I_CGATGT
@K00188:14:H2LMFBBXX:6:1101:6501:1686 1:N:0:0_I_CGATGT
@K00188:14:H2LMFBBXX:6:1101:18133:1686 1:N:0:0_I_CGATGT
@K00188:14:H2LMFBBXX:6:1101:21827:1686 1:N:0:0_I_CGATGT
Run Code Online (Sandbox Code Playgroud)
问题是在sort
.
以前的问题有一些解决方案(例如sort --parallel
,python 脚本等),但它们在我手上没有解决。
我想坚持,sort
但在使用该选项时出现以下错误消息--parallel
sort: unrecognized option '--parallel=2'
Try `sort --help' for more information.
Run Code Online (Sandbox Code Playgroud)
如果有一些用于排序大列表的python脚本,我想尝试一下。
你有什么建议吗?
sort
(除了一些精简的实现,如busybox
)不受内存限制,因为它只使用有限的数量,并在达到该限制时求助于临时文件。
更有可能的是,您的磁盘空间不足。在sort
正在使用的临时区域中,您将需要大约 130GB 的可用磁盘空间(除了用于存储结果的磁盘空间,除非您使用 将文件写入自身sort -o mybigfile mybigfile
)。
如果 的文件系统中没有足够的空间/tmp
,请设置$TMPDIR
为具有更多可用磁盘空间的位置(另请参阅-T
某些sort
实现的选项):
TMPDIR=~/tmp sort my-big-file > sorted
Run Code Online (Sandbox Code Playgroud)
为了减少所需的临时磁盘空间量,在某些sort
实现中,您还可以告诉它压缩临时文件。如果您选择像 CPU 一样易于使用lzop
且在旋转磁盘上具有文件系统的压缩器,这甚至可能会提高性能。
TMPDIR=~/tmp sort --compress-program=lzop my-big-file > sorted
Run Code Online (Sandbox Code Playgroud)