Sort
在 Linux 中對巨大的列表(130Gb)進行排序
我正在嘗試
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