1 概述
日志管理工具journalctl是centos7上專有的日志管理工具,該工具是從message這個文件里讀取信息。Systemd統一管理所有Unit的啟動日志。帶來的好處就是,可以只用journalctl一個命令,查看所有日志(內核日志和應用日志)。
日志的配置文件是: /etc/systemd/journald.conf
journalctl功能強大,用法非常多。
本文將介紹journalctl的相關使用方法。
2 journalctl 使用方法
查看所有日志
默認情況下,只保存本次啟動的日志
journalctl
查看內核日志(不顯示應用日志)
journalctl -k
查看系統本次啟動的日志
journalctl -b
journalctl -b -0
查看上一次啟動的日志需更改設置,如上次系統崩潰,需要查看日志時,就要看上一次的啟動日志。
journalctl -b -1
查看指定時間的日志
journalctl --since="2012-10-3018:17:16"
journalctl --since "20 minago"
journalctl --since yesterday
journalctl --since"2015-01-10" --until "2015-01-11 03:00"
journalctl --since 09:00 --until"1 hour ago"
journalctl --since"15:15" --until now
顯示尾部的最新10行日志
journalctl -n
顯示尾部指定行數的日志查看的是/var/log/messages的日志,
但是格式上有所調整,如主機名格式不一樣而已
journalctl -n 20
實時滾動顯示最新日志
journalctl -f
查看指定服務的日志
journalctl /usr/lib/systemd/systemd
查看指定進程的日志
journalctl _PID=1
查看某個路徑的腳本的日志
journalctl /usr/bin/bash
查看指定用戶的日志
journalctl _UID=33 --since today
查看某個Unit的日志
journalctl -u nginx.service
journalctl -u nginx.service --since today
實時滾動顯示某個Unit的最新日志
journalctl -u nginx.service -f
合並顯示多個Unit的日志
journalctl -u nginx.service -u php-fpm.service --since today
查看指定優先級(及其以上級別)的日志
日志優先級共有8級
- 0: emerg
- 1: alert
- 2: crit
- 3: err
- 4: warning
- 5: notice
- 6: info
- 7: debug
顯示不同級別的日志:
journalctl -p err -b
journalctl -p err..alert -b
不分頁標准輸出日志
默認分頁輸出--no-pager改為正常的標准輸出
journalctl --no-pager
以JSON格式(單行)輸出
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。易於人閱讀和編寫。同時也易於機器解析和生成。它基於JavaScriptProgramming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。JSON采用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java,JavaScript, Perl, Python等)。這些特性使JSON成為理想的數據交換語言。
JSON建構於兩種結構:
“名稱/值”對的集合(A collection ofname/value pairs):不同的語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組(associativearray)。
值的有序列表(An ordered list of values):在大部分語言中,它被理解為數組(array)。
這些都是常見的數據結構。事實上大部分現代計算機語言都以某種形式支持它們。這使得一種數據格式在同樣基於這些結構的編程語言之間交換成為可能。
例子:
以JSON格式(單行)輸出
journalctl -b -u httpd.service -o json
以JSON格式(多行)輸出,可讀性更好,建議選擇多行輸出
journalctl -b -u httpd.service -o json-pretty
顯示日志占據的硬盤空間
journalctl --disk-usage
指定日志文件占據的最大空間
journalctl --vacuum-size=1G
指定日志文件保存多久
journalctl --vacuum-time=1years