將time的結果放入到文件中
阿新 • • 發佈:2018-09-21
寫入 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的結果放入到文件中