Prohlížení velkých souborů protokolu pro odstraňování problémů je pro systémové správce a programátory všední rutinní úkol.
V tomto článku se podíváme na to, jak efektivně prohlížet a manipulovat s velkými soubory protokolu pomocí 10 úžasných příkladů.
Příklad 1:Zobrazení konkrétních řádků (na základě čísla řádku) souboru pomocí příkazu sed
Zobrazit pouze konkrétní řádky uvedené čísly řádků.
Syntax: $ sed -n -e Xp -e Yp FILENAME
- sed :příkaz sed, který ve výchozím nastavení vytiskne všechny řádky.
- -n :Potlačí výstup.
- -e CMD :Příkaz, který se má provést
- Xp:Vytiskne číslo řádku X
- Yp:Vytiskne číslo řádku Y
- FILENAME :název souboru, který má být zpracován.
Níže uvedený příklad vytiskne řádky 120, 145, 1050 ze syslogu.
$ sed -n -e 120p -e 145p -e 1050p /var/log/syslog
V následujícím příkladu můžete zobrazit obsah var/log/cron od řádku číslo 101 do 110.
- M – Číslo startovní řady
- N – Číslo koncového řádku
Syntax: sed -n M,Np FILENAME $ sed -n 101,110p /var/log/cron
Příklad 2:Zobrazení prvních N řádků souboru pomocí příkazu head
Tento příklad zobrazuje pouze prvních 15 řádků souboru /var/log/maillog. Změnou 15 na 10 zobrazíte prvních 10 řádků souboru protokolu.
Syntax: head -n N FILENAME $ head -n 15 /var/log/maillog
Příklad 3:Ignorování posledních N řádků souboru pomocí příkazu head
Tento příklad ukazuje, jak ignorovat posledních N řádků a zobrazit pouze zbývající řádky z horní části souboru.
Následující příklad zobrazí všechny řádky /var/log/secure kromě posledních 250 řádků.
Syntax: head -n -N FILENAME $ head -n -250 /var/log/secure
Příklad 4:Zobrazení posledních N řádků souboru pomocí příkazu tail
Tento příklad zobrazuje pouze posledních 50 řádků souboru /var/log/messages. Změnou 50 na 100 zobrazíte posledních 100 řádků souboru protokolu.
Syntax: tail -n N FILENAME $ tail -n 50 /var/log/messages
Příklad 5:Ignorování prvních N-1 řádků souboru pomocí příkazu tail
Tento příklad ukazuje, jak ignorovat prvních N-1 řádků a zobrazit pouze zbývající řádky.
Následující příklad ignoruje první čtyři řádky souboru /etc/xinetd.conf, který obsahuje pouze komentáře.
Syntax: tail -n +N FILENAME $ tail -n +5 /etc/xinetd.conf defaults { instances = 60 log_type = SYSLOG authpriv log_on_success = HOST PID log_on_failure = HOST cps = 25 30 } includedir /etc/xinetd.d
Příklad 6:Zobrazení rostoucího souboru protokolu v reálném čase pomocí příkazu tail
Toto je pravděpodobně jeden z nejpoužívanějších příkazů sysadmins. Chcete-li zobrazit rostoucí soubor protokolu a zobrazit pouze novější obsah, použijte tail -f, jak je uvedeno níže.
Následující příklad ukazuje obsah příkazu /var/log/syslog v reálném čase.
Syntax: tail -f FILENAME $ tail -f /var/log/syslog
Příklad 7:Zobrazení konkrétních řádků (na základě čísla řádku) souboru pomocí příkazu head and tail
Níže uvedený příklad zobrazí čísla řádků 101 – 110 souboru /var/log/anaconda.log
- M – Číslo startovní řady
- N – Číslo koncového řádku
Syntax: cat file | tail -n +N | head -n (M-N+1) $ cat /var/log/anaconda.log | tail -n +101 | head -n 10
- cat :vytiskne celý soubor do stdout.
- tail -n +101 :ignoruje řádky do daného čísla řádku a poté začne tisknout řádky za daným číslem.
- head -n 10 :vytiskne prvních 10 řádků, tj. 101 až 110, a ignoruje zbývající řádky.
Příklad 8:Zobrazte řádky odpovídající vzoru a několik řádků po shodě.
Následující příklad zobrazuje řádek, který odpovídá „Initializing CPU“ z /var/log/dmesg a 5 řádků bezprostředně po této shodě.
# grep "Initializing CPU#1" /var/log/dmesg Initializing CPU#1 [Note: The above shows only the line matching the pattern] # grep -A 5 "Initializing CPU#1" dmesg Initializing CPU#1 Calibrating delay using timer specific routine.. 3989.96 BogoMIPS (lpj=1994982) CPU: After generic identify, caps: bfebfbff 20100000 00000000 00000000 CPU: After vendor identify, caps: bfebfbff 20100000 00000000 00000000 monitor/mwait feature present. CPU: L1 I cache: 32K, L1 D cache: 32K [Note: The above shows the line and 5 lines after the pattern matching]
Podívejte se na náš dřívější článek Get a Grip on the Grep! – 15 praktických příkladů příkazů Grep, které vysvětlují, jak používat příkaz grep.
Jak bylo vysvětleno v našem předchozím článku o příkazu grep, jsou možné následující operace.
- Zobrazení konkrétních čar identifikovaných podle vzorů, což je výchozí funkce grep.
- Zobrazení pouze odpovídajících znaků.
- Zobrazení N řádků po shodě s možností -A.
- Zobrazení N řádků před zápasem s volbou -B.
- Zobrazení N řádků kolem shody s volbou -C.
Příklad 9:Zobrazení konkrétních bajtů ze souboru.
Následující příklad vysvětluje, jak zobrazit buď prvních 40 nebo posledních 30 bajtů souboru.
Zobrazit prvních 40 bajtů ze syslogu.
$ head -c40 /var/log/syslog
Zobrazit posledních 30 bajtů ze syslogu.
$ tail -c30 /var/log/syslog
Příklad 10:Zobrazení komprimovaných souborů protokolu
Po určité době se všechny systémové soubory protokolu otočí a zkomprimují. Můžete jej dekomprimovat za běhu a přesouvat výstup do jiného unixového příkazu, abyste si soubor prohlédli, jak je vysvětleno níže.
Podívejte se na náš dřívější článek Síla příkazů Z – příklady Zcat, Zless, Zgrep, Zdiff
- Zobrazí prvních N řádků komprimovaného souboru.
$ zcat file.gz | head -250
- Zobrazí posledních N řádků komprimovaného souboru.
$ zcat file.gz | tail -250
- Ignorování posledních N řádků komprimovaného souboru.
$ zcat file.gz | head -n -250
- Ignorování prvních N řádků komprimovaného souboru.
$ zcat file.gz | tail -n +250
- Zobrazení čar odpovídajících vzoru
$ zcat file.gz | grep -A2 'error'
- Zobrazení konkrétního rozsahu linek identifikovaných číslem linky.
$ zcat file.gz | sed -n -e 45p -e 52p
Pokud se potřebujete vrátit, uložte si tuto stránku do záložek na adrese del.icio.us pro praktickou referenci.