ประการแรกหากคุณคาดหวังว่าการประทับเวลาเหล่านี้จะเป็นตัวแทนของเหตุการณ์จริง ๆ โปรดจำไว้ว่าเนื่องจากโปรแกรมจำนวนมากดำเนินการบัฟเฟอร์บรรทัด ได้รับการพิมพ์มากกว่าการประทับเวลาของการกระทำที่เกิดขึ้น
คุณอาจต้องการตรวจสอบว่าคำสั่งของคุณยังไม่มีคุณสมบัติ inbuilt สำหรับการทำเช่นนี้ ตัวอย่างping -D
มีอยู่ในบางping
เวอร์ชันและพิมพ์เวลาตั้งแต่ยุคยูนิกซ์ยุคก่อนแต่ละบรรทัด หากคำสั่งของคุณไม่มีวิธีการของตัวเองมีวิธีการและเครื่องมือบางอย่างที่สามารถใช้ได้รวมถึงวิธีอื่น:
POSIX เชลล์
โปรดจำไว้ว่าเนื่องจากเชลล์จำนวนมากเก็บสตริงไว้ภายในเป็น cstrings ถ้าอินพุตมีอักขระ null ( \0
) อาจทำให้บรรทัดสิ้นสุดก่อนกำหนด
command | while IFS= read -r line; do printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$line"; done
GNU awk
command | gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }'
Perl
command | perl -pe 'use POSIX strftime; print strftime "[%Y-%m-%d %H:%M:%S] ", localtime'
หลาม
command | python -c 'import sys,time;sys.stdout.write("".join(( " ".join((time.strftime("[%Y-%m-%d %H:%M:%S]", time.localtime()), line)) for line in sys.stdin )))'
ทับทิม
command | ruby -pe 'print Time.now.strftime("[%Y-%m-%d %H:%M:%S] ")'