Bash
Unix命令為文件的輸出加上時間戳,但相對於開始時間?
有許多程序(例如
ts
inmoreutils
)和各種 bash 單行程序,用於在命令/管道的輸出之前加上該行“列印”時的時間戳。但是,是否有一個命令,對於它獲得的每一行,將列印自命令啟動以來的時間(和/或它第一次看到一行的時間)和目前行?因此,它不會列印目前時間,而是列印該命令開始以來的時間?(以及線)
當執行需要一段時間並產生大量輸出的命令時,了解您查看它多長時間會很有幫助。
鞭策一個簡單的命令是微不足道的,但我不想重新發明輪子。
這是在 Ubuntu Linux 系統上。
這是一種方法:
#!/bin/bash SECONDS=0 # it will already be initialized to zero at the start of the script while read -r line do echo "$SECONDS: $line" done < file # or < <(command)
SECONDS
是一個每秒自動遞增的變數。
好吧,看起來有一些文件不足(某些*手冊頁**上缺少)*選項可以
ts
完全按照您的意願進行操作。從我的系統
man ts
:如果通過
-i
or-s
開關,則ts
報告增量時間戳而不是絕對時間戳。預設格式更改為"%H:%M:%S"
, 並且"%.S"
也"%.s"
可以使用。在 的情況下-i
,每個時間戳都將是自上一個時間戳以來經過的時間。在 的情況下-s
,使用自程序啟動以來經過的時間。該
-m
開關使系統的單調時鐘被使用。當您詢問時不確定這些是否存在,但男人說“版權所有 2006”。
例子
cameron@linux:~$ (echo a; sleep 1; echo b; sleep 2; echo c) | ts -i 'delta: %.S' | ts -s 'abs: %.S' abs: 00.000007 delta: 00.000009 a abs: 00.973008 delta: 00.972945 b abs: 02.974591 delta: 02.001582 c