緣起
今天看到一個問題,如何把time的執行結果放到文件中,心想直接time sh sleep.sh >output.log不就能夠了麼。其實大部分返回標準輸出的命令均可以這麼幹,列如:ls >output.log 就會把ls的執行結果放入到output.log中。shell
那麼爲何time命令就不行了呢?
由於:time命令返回的是標準錯誤輸出!ide
實驗準備:
1.有一個sleep.sh腳本,腳本內容以下:
2.執行結果以下:
3.經過time命令獲取腳本執行時間
blog
無效的例子1:
time sh sleep.sh >output.log
下圖能夠看到只是把腳本輸出的內容放入到了output.log,並無把time命令的結果放入到output.log
it
上面的例子是重定向腳本的結果到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執行,就能夠拿到結果了。