Sort

在 Linux 中對巨大的列表(130Gb)進行排序

  • September 14, 2017

我正在嘗試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

問題是sort.

以前的問題有一些解決方案(例如sort --parallel,python 腳本等),但在我手上並沒有解決。

我想堅持,sort但使用該選項時出現以下錯誤消息--parallel

sort: unrecognized option '--parallel=2'
Try `sort --help' for more information.

如果有一些用於排序大列表的python腳本,我想試一試。

你有什麼建議嗎?

sort(除了一些精簡的實現,如busybox)不受記憶體限制,因為它只使用有限的數量,並在達到該限制時訴諸臨時文件。

更有可能的是,您的磁碟空間不足。您需要在臨時區域sort中使用大約 130GB 的可用磁碟空間(除了用於儲存結果的磁碟空間,除非您使用 將文件覆蓋自身sort -o mybigfile mybigfile)。

如果 的文件系統中沒有足夠的空間/tmp,請設置$TMPDIR為具有更多可用磁碟空間的位置(另請參閱-T某些sort實現的選項):

TMPDIR=~/tmp sort my-big-file > sorted

為了減少所需的臨時磁碟空間量,在某些sort實現中,您還可以告訴它壓縮臨時文件。如果你選擇一個在 CPU 上很容易使用的壓縮器,lzop並且在旋轉磁碟上有一個文件系統,那甚至可能會提高性能。

TMPDIR=~/tmp sort --compress-program=lzop my-big-file > sorted

引用自:https://unix.stackexchange.com/questions/383056