1. 程式人生 > >將time的結果放入到文件中

將time的結果放入到文件中

寫入 time 內容 方式 記錄 準備 標準輸出 .sh 通過

緣起

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

那麽為什麽time命令就不行了呢?

因為:time命令返回的是標準錯誤輸出!

實驗準備:

1.有一個sleep.sh腳本,腳本內容如下:
技術分享圖片
2.執行結果如下:
技術分享圖片
3.通過time命令獲取腳本執行時間
技術分享圖片

無效的例子1:

time sh sleep.sh >output.log

下圖可以看到只是把腳本輸出的內容放入到了output.log,並沒有把time命令的結果放入到output.log

技術分享圖片

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

無效的例子2:

time sh sleep.sh &>output.log

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

技術分享圖片

通過上圖,可以看到兩種方式都沒有把time的結果輸出到output.log文件,因為兩個命令都代表把腳本的標準輸出和錯誤輸出重定向到output.log文件,而沒有辦法把time的輸出寫入到文件

有效的列子1:

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

技術分享圖片

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

將time的結果放入到文件中