2012-06-11 154 views
4

我目前正在處理大型數據集,即使文件格式轉換每個主題至少需要一個小時,因此我經常不確定我的命令是否已經執行或程序是否已凍結。我想知道是否有人對如何跟蹤我試圖在Linux中運行的命令/腳本的進度提示?如何跟蹤linux命令的進度?

您的幫助將不勝感激。

+3

哪些命令?其中一些可能有詳細輸出選項。 –

+0

Shell腳本可以通過'sh -x'而不是'sh'運行,以便在執行命令之前顯示這些命令。 –

+0

如果你生成一個日誌或任何類型的文件,你可以在這個文件上運行'tail -f'。 –

回答

3

如果持久命令生成的文件foo.out一些輸出,你可以做watch ls -l foo.outtail -f foo.out

你也可以列出/proc/$(pidof prog)/fd找出一些prog

+0

輸出是_basic.nii.gz_格式的文件。但是,當我輸入'watch ls -l basic.nii.gz'時,它說沒有這樣的文件或目錄存在 – user1442363

+1

某些實用程序暫時重命名輸出。 –

1

您可以使用詳細的輸出,但它會減慢甚至更多。

2

您可以使用strace來關注程序的系統調用,這將使您能夠按照open調用。

+0

你應該在命令行中指定'strace'還是可以按順序輸入? @thiton – user1442363

+0

(Both :)你可以'strace'命令或已經運行的進程。 –

3

另外打開的文件,以@ basile-starynkevitch答案,
我有一個bash腳本,可以測量你在百分數中處理了多少文件。

它觀察到procfs從fd信息(/proc/pid/fdinfo)獲得當前位置,並且以百分比計算它相對於總文件大小。

https://gist.github.com/azat/2830255

curl -s https://gist.github.com/azat/2830255/raw >| progress_fds.sh \ 
&& chmod +x progress_fds.sh 

Usage: 
./progress_fds.sh /path/to/file [ PID] 

Сan是有用的人

+0

我把你的劇本作爲靈感,並延伸了一點機制。我的Python腳本可以在https://code.activestate.com/recipes/578882-monitor-progress-of-file-descriptors-of-another-pr/上查看。 – Alfe

+0

是的,@Alfe很好的改進,我會研究這個!謝謝! – azat

+0

簡潔而且非常有用,這應該有更多的選票 – pyRabbit

1

我想不可能有一般問題的答案,它只是取決於節目的類型(甚至不有對Linux做任何事情,請參閱「停止問題」)。

如果您在轉換過程中碰巧使用了管道,我發現pv(1)工具非常有幫助。即使pv無法知道數據的總大小,也可以幫助查看是否存在實際進度以及數據速率有多好。它不是大多數標準安裝的一部分,但可能必須明確安裝。