將time的結果放入到文件中

緣起

今天看到一個問題,如何把time的執行結果放到文件中,心想直接time sh sleep.sh >output.log不就能夠了麼。其實大部分返回標準輸出的命令均可以這麼幹,列如:ls >output.log 就會把ls的執行結果放入到output.log中。shell

那麼爲何time命令就不行了呢?

由於:time命令返回的是標準錯誤輸出!ide

實驗準備:

1.有一個sleep.sh腳本,腳本內容以下:
sleep.sh
2.執行結果以下:
將time的結果放入到文件中
3.經過time命令獲取腳本執行時間
將time的結果放入到文件中blog

無效的例子1:

time sh sleep.sh >output.log

下圖能夠看到只是把腳本輸出的內容放入到了output.log,並無把time命令的結果放入到output.log
將time的結果放入到文件中it

上面的例子是重定向腳本的結果到logfile,可是time的輸出沒有被記錄到文件中

無效的例子2:

time sh sleep.sh &>output.log

time sh sleep.sh >output.log 2>&1

將time的結果放入到文件中

經過上圖,能夠看到兩種方式都沒有把time的結果輸出到output.log文件,由於兩個命令都表明把腳本的標準輸出和錯誤輸出重定向到output.log文件,而沒有辦法把time的輸出寫入到文件

有效的列子1:

(time sh sleep.sh) &>output.log

將time的結果放入到文件中

這樣把命令放入到子shell執行,就能夠拿到結果了。

相關文章
相關標籤/搜索