Shell

如何在多個命令上執行時間並將時間輸出寫入文件?

  • May 27, 2020

我想執行time命令來測量幾個命令的時間。

我想做的是:

  • 測量所有加在一起的執行時間
  • time輸出寫入文件
  • STDERR從我正在測量的命令中寫入STDERR

不想做的是

  • 將幾個命令寫入一個單獨的腳本(為什麼?因為所有這些已經是我以程式方式生成的腳本,並且創建另一個臨時腳本會比我想要的更混亂)

到目前為止我嘗試了什麼:

/usr/bin/time --output=outtime -p echo "a"; echo "b";

不起作用,time僅在第一個上執行。

/usr/bin/time --output=outtime -p ( echo "a"; echo "b"; )

不起作用,(是意外的令牌。

/usr/bin/time --output=outtime -p { echo "a"; echo "b"; }

不起作用,“沒有這樣的文件或目錄”。

/usr/bin/time --output=outtime -p ' echo "a"; echo "b";'

不起作用,“沒有這樣的文件或目錄”。

time ( echo "a"; echo "b"; ) 2>outtime

不起作用,因為它將全部重定向STDERRouttime; 我只想要time那裡的輸出。

而且當然,

time --output=outime echo "a";

不起作用,因為--output=outime: command not found.

我該怎麼做?

用作sh -c 'commands'命令,例如:

/usr/bin/time --output=outtime -p sh -c 'echo "a"; echo "b"'

不是正確的答案,但與問題非常相關。

獲取多個程序組合括號的計時統計資訊是必需的。用分號分隔命令**;或 &&**,如果 command2 應該只執行,當 command1 退出時沒有錯誤:

time ( command1 ; command2 )

time ( command1 && command2 )

引用自:https://unix.stackexchange.com/questions/46051