GNU/Linux >> Znalost Linux >  >> Linux

Jak přidat časové razítko do protokolu skriptu bash?

Řešení 1:

Výstup skriptu můžete propojit smyčkou s předponou aktuálního data a času:

./script.sh | while IFS= read -r line; do printf '%s %s\n' "$(date)" "$line"; done >>/var/log/logfile

Pokud to budete často používat, je snadné vytvořit bash funkci pro zpracování smyčky:

adddate() {
    while IFS= read -r line; do
        printf '%s %s\n' "$(date)" "$line";
    done
}

./thisscript.sh | adddate >>/var/log/logfile
./thatscript.sh | adddate >>/var/log/logfile
./theotherscript.sh | adddate >>/var/log/logfile

Řešení 2:

Viz ts z Ubuntu moreutils balíček:

command | ts

Nebo, pokud $command provádí automatické ukládání do vyrovnávací paměti (vyžaduje expect-dev balíček):

unbuffer command | ts

Řešení 3:

Datum příkaz poskytne tyto informace

date -u
Sat Sep 10 22:39:24 UTC 2011

takže můžete

echo $(date -u) "Some message or other"

je to to, co jsi chtěl?

Řešení 4:

Můžete jednoduše echo výstup příkazu do souboru protokolu. tj.

echo "`date -u` `./script.sh`" >> /var/log/logfile

Opravdu to funguje :)

Příklad:

[[email protected]]$ ./script.sh 
Hello Worldy
[[email protected]]$ echo "`date -u` `./script.sh`" >> logfile.txt
[[email protected]]$ cat logfile.txt 
Mon Sep 12 20:18:28 UTC 2011 Hello Worldy
[[email protected]]$ 

Řešení 5:

Vytvořte config.sh soubor

#!/usr/bin/env bash
LOGFILE="/path/to/log.log"
TIMESTAMP=`date "+%Y-%m-%d %H:%M:%S"`

Když potřebujete odeslat soubor protokolu, použijte

#!/usr/bin/env bash
source /path/to/config.sh

echo "$TIMESTAMP Say what you are doing" >> $LOGFILE

do_what_you_want >> $LOGFILE

Soubor protokolu bude vypadat takto

2013-02-03 18:22:30 Say what you are doing

Bude tedy snadné seřadit podle data


Linux
  1. Jak přidat uživatele Unix/linux do skriptu Bash?

  2. Jak přidat nové řádky do proměnných ve skriptu Bash?

  3. Jak nastavit parametry, když Pipe Bash Script to Bash?

  1. Bash Script - Jak číst uživatelský vstup

  2. Jak automaticky přidat uživatelský účet A heslo pomocí skriptu Bash?

  3. Jak předat parametry skriptu Bash?

  1. Jak převést DATE na UNIX TIMESTAMP ve skriptu shellu na MacOS

  2. Jak přidat řetězec data na každý řádek nepřetržitě zapisovaného souboru protokolu

  3. Jak přidat úlohu crontab do crontab pomocí bash skriptu?