Bash

Unix命令為文件的輸出加上時間戳,但相對於開始時間?

  • March 30, 2020

有許多程序(例如tsin moreutils)和各種 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

如果通過-ior-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

引用自:https://serverfault.com/questions/409310