我的工作涉及很多來自超大文件的排序字段。我通常用bash中的sort
命令來做到這一點。不幸的是,當我開始進行排序時,我不知道要花多長時間。我是否應該等待一秒才能顯示結果,還是應該在運行時開始處理其他問題?是否有可能在Linux中顯示排序的進度?
是否有任何可能的方法來了解排序進度有多遠或運行速度有多快?
$ cut -d , -f 3 VERY_BIG_FILE | sort -du > output
我的工作涉及很多來自超大文件的排序字段。我通常用bash中的sort
命令來做到這一點。不幸的是,當我開始進行排序時,我不知道要花多長時間。我是否應該等待一秒才能顯示結果,還是應該在運行時開始處理其他問題?是否有可能在Linux中顯示排序的進度?
是否有任何可能的方法來了解排序進度有多遠或運行速度有多快?
$ cut -d , -f 3 VERY_BIG_FILE | sort -du > output
不,GNU sort
不會進行進度報告。
但是,如果您使用的sort
只是爲了刪除重複,你不真正關心的排序,然後有這樣做的一個more scalable way:
awk '! a[$0]++'
此寫出的第一次出現只要看到它,就可以讓你瞭解進展情況。
您可以在後臺執行 你「之類的」,你會得到提示,你可以做其他的工作
$排序...... &#(&在後臺運行機構)
儘管您的陳述無疑是正確的,但您的答案與問題無關。 – tink 2013-04-04 17:29:18
你可能想要嘗試pv,它應該能夠讓您很好地瞭解管道中吞吐量的變化。
例(未經測試)前後sort
命令後注入pv
獲得吞吐量的想法:
$ cut -d , -f 3 VERY_BIG_FILE | pv -cN cut | sort -du | pv -cN sort > output
編輯:我錯過了你的sort命令的-u,所以計算行先能夠獲得百分比輸出是無效的。從我的答案中刪除了該部分。
雖然'pv'是一個很好的工具,它只是給出了一個想法,如果你給它一個'-s'選項來告訴它它的總長度,我們真的有多遠。 – glglgl 2013-04-05 08:06:11
@glglgl我的示例在編輯之前使用了'-s',但是因爲在排序後我們無法知道大小,所以我刪除了它。 OP要求提供一個解決方案,至少有助於確定_「它的工作速度有多快_」,這在某種程度上是「pv」的作用。 – 2013-04-05 08:26:58
它正在'平坦'。沒有一種可靠的方法來檢測它已經發展的程度以及運行的時間。你可能可以繞過/ proc進行排序並作一些推論,但可能不會。 – 2013-04-04 15:48:43
也許另一種排序例程呢?大多數排序例程(比如QuickSort)至少對排序有多大意見。 – 2013-04-04 15:59:48