2009-12-30 122 views
1

我使用以下命令連接總大小爲40Gb的大約20個文件。Unix貓命令需要多長時間?

cat hda1.ntfs-ptcl-img.gz.* > hda1.ntfs-ptcl-img.gz 

只是想知道這個過程通常需要多長時間,因爲它已經運行了一段時間了。

謝謝。

回答

0

在另一個終端中,使用「ls -al」檢查輸出文件的大小,這樣你就會知道你有多遠。

對於一個進度條,嘗試「PV」(管道觀衆):http://www.catonmat.net/blog/unix-utilities-pipe-viewer/

+0

這是在clonezilla的Live CD上,所以只有一個終端。偉大的建議,但不會想到這一點。 – Daniel 2009-12-30 08:30:22

0

您可以創建更復雜的過程,它會告訴你該文件已經在處理。它不會顯示整個過程的時間,但會比您的更詳細。

for f in `ls hda1.ntfs-ptc1-img.gz.*`; do 
    echo $f 
    cat $f >> hda1.ntfs-ptc1.img.gz 
done 
+0

這應該是>>而不是>如果你希望它們全部被追加到輸出文件。 – dmazzoni 2009-12-30 08:31:15

+0

是的你是對的。謝謝。我修好了它。 – kokosing 2009-12-30 08:34:05

+0

所以使用>根本不起作用? – Daniel 2009-12-30 08:34:13

10

按Ctrl + Z暫停作業,然後使用'bg'命令在後臺運行它。然後你可以使用'ls -l'來查看輸出文件的大小,或'ls -l/proc/*/fd | grep hda1「來顯示正在處理哪個文件。

+0

謝謝,這有助於堆積。將會更頻繁地使用這個命令。 – Daniel 2009-12-30 08:48:45

4

只是想知道多久,這個過程應該 通常採取

這是不可能的回答就到這裏提供的信息:這取決於你是從,在那裏你寫,讀等地方。如果你正在讀寫本地磁盤,將會出現一些爭用。如果您通過網絡進行閱讀或寫作,則速度可能會更慢,具體取決於您的網絡速度。

爲了得到一些信息出來的過程中,你可以從一個單一的cat命令打破這一成一個for循環:

for file in hda1.ntfs-ptcl-img.gz.* 
do 
    echo "Starting $file at `date`" 
    cat $file >> hda1.ntfs.ptcl-img.gz 
done 

或者,你可以使用pv(pipeview)實用程序來得到一些更多信息流出您的管道。從man pv

PV允許用戶看到數據的進度 通過管道,通過給出 信息,諸如經過的時間, 每centage完成(與進度 巴),當前的吞吐量速率,總數據傳輸和ETA。

要使用它,請將其插入兩個進程之間的管道中,並使用 相應的選項。其標準 輸入將傳遞到其標準輸出 ,標準錯誤將顯示 。

PV將每個供給FILE反過來到標準輸出複製( - 意味着 標準輸入),或者如果 指定文件只是標準輸入 複製。這與貓(1)的 行爲相同。

所以,僅僅用pv取代cat在命令行:

pv hda1.ntfs-ptcl-img.gz.* > hda1.ntfs-ptcl-img.gz 

既然你已經開始,雖然這一關,暗示了下一步該怎麼做的時間不是特別有幫助。相反,您可以將正在運行的作業放在後臺(使用ctrl + z,然後在提示符下運行bg以使作業繼續在後臺運行)。如果你幸運的話,你的livecd將有watch,所以你可以watch ls -h hda1.ntfs.ptcl-img.gz - 這將每隔幾秒運行一次,並用輸出更新屏幕,這樣你就可以隨着時間觀察文件的增長。

如果您沒有安裝watch做,用窮人的手錶:

while true 
do 
    clear 
    date 
    ls -l hda1.ntfs.ptcl-img.gz 
    sleep 3 
done 

你還是要搞清楚自己如何迅速字節寫入(因此多少時間,你已經離開)。

+0

當我寫完這篇文章時,其他人都指出了pv(它可能存在也可能不存在於livecd中),並且提出了類似的for循環(儘管缺少日期戳,我喜歡它,因爲我很容易分心,忘記我什麼時候開始的事情)。英雄所見略同! – 2009-12-30 08:47:40

0

簡短的答案是,大概一個小時左右。

如果您在本地執行此操作,但您尚未回到提示狀態,它仍然可以正常工作。如果您正在遠程執行此操作,則可能會有一些機會(取決於您是否連接到無線路由器等一系列因素),因此您的連接已超時。

與其他人一樣,很多都取決於加入的文件數量,無論是本地還是遠程,您的計算機上發生了什麼其他進程,您的處理器,時鐘速度和RAM等等。等等。

確保它做某事的最簡單方法是打開另一個終端窗口並定期運行「ls -l /path/to/file.name」並查看輸出文件是否變大。你也可以運行「top -p PID」(用實際進程ID替換PID)來監視使用top的那個進程,只要它仍在運行,它仍然在做一些事情。

0

與Roger的答案類似,我將運行watch -n 10 "ls -l",它每10秒調用一次「ls -l」,並讓我觀察文件的增長情況。或者我將使用watch "du -sh"

我真的不知道在文件操作過程中這是不是一件好事(我猜這可能會讓事情減慢一點點)?但它對我來說很有用。