在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

linux日志管理之journalctl命令

馬哥Linux運(yùn)維 ? 來源:博客園sparkdev ? 2024-08-14 18:18 ? 次閱讀

目錄

  • Help
  • 輸出所有的日志記錄
  • 匹配(match)
  • 把日志保存到文件中
  • 限定日志所能占用的最高容量
  • 查看某次啟動后的日志
  • 查看指定時間段的日志
  • 同時應(yīng)用 match 和時間過濾條件
  • 按 unit 過濾日志
  • 通過日志級別進(jìn)行過濾
  • 實(shí)時更新日志
  • 只顯示最新的 n 行
  • 控制輸出
  • 按可執(zhí)行文件的路徑過濾
  • 查看內(nèi)核日志
  • 總結(jié)

journalctl 用來查詢 systemd-journald 服務(wù)收集到的日志。systemd-journald 服務(wù)是 systemd init 系統(tǒng)提供的收集系統(tǒng)日志的服務(wù)。

命令格式為:
journalctl [OPTIONS…] [MATCHES…]

journalctl 命令的路徑為:
/bin/journalctl

Help

可以通過 man page 和 -h 選項(xiàng)來獲得最直接的幫助文檔:

$ man journalctl
$ journalctl -h

輸出所有的日志記錄

不帶任何選項(xiàng)時,journalctl 輸出所有的日志記錄:

$ sudo journalctl

wKgaoma8hKeAQMsTAABtScTXN6w548.png

這基本上沒什么用處,因?yàn)槟懔⒓淳捅缓樗愕娜罩居涗浗o淹沒了。所以,接下來我們學(xué)習(xí)如何高效的過濾出有價值的日志信息

匹配(match)

我們可以通過 "FIELD=VALUE" 的格式來匹配具體的日志記錄, 如:

_SYSTEMD_UNIT=cron.service

日志信息的定義也類似一個實(shí)體類型,具體的信息被保存在各個對應(yīng)的字段中,比如 MESSAGE、MESSAGE_ID、_PID、_UID、_HOSTNAME、_SYSTEMD_UNIT 等等(通過 man 7 systemd.journal-fields 可以查看所有可用的 match 字段)。因此可以通過這些字段的內(nèi)容匹配相關(guān)的日志記錄:

wKgZoma8hKeAUKVqAACk9SQa7hk331.png

上圖中的輸出是 cron.service 服務(wù)相關(guān)的日志記錄。

可以同時添加多個字段進(jìn)行匹配,它們之間是與的關(guān)系,就是同時符合多個條件的記錄才會被匹配,比如添加 PRIORITY 字段的匹配條件:

$ journalctl _SYSTEMD_UNIT=cron.service PRIORITY=6

wKgaoma8hKeAUye6AATEfgoP6-g076.png

注意各個字段的取值,比如為 PRIORITY 設(shè)置 debug、info 是不工作的,必須設(shè)置為對應(yīng)的數(shù)字。可以通過 -F 選項(xiàng)來查看某個字段的可選值:

$ journal -F PRIORITY

wKgZoma8hKeAXzMZAAG_SjRz2CA835.png

具體的對應(yīng)方式如下:
0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug

對同一個字段應(yīng)用多個 match 條件的情況,比如:

$ journalctl _SYSTEMD_UNIT=cron.service _SYSTEMD_UNIT=prometheus.service

此時 cron.service 和 prometheus.service 的日志都會輸出。

多個 match 條件的或操作
使用 "+" 號可以對多個匹配字段執(zhí)行或操作:

$ journalctl _SYSTEMD_UNIT=cron.service + _PID=28097

上面的命令會輸出 cron.service 的日志和進(jìn)程 28097 的日志。

下面是一個更復(fù)雜的例子:

$ journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097 + _SYSTEMD_UNIT=dbus.service

前面的兩個條件是與的關(guān)系,最后一個條件與前面的兩個條件是或的關(guān)系,也就是相對于用小括號把前面的兩個條件括起來。

把日志保存到文件中

systemd-journald 服務(wù)收集到的日志默認(rèn)保存在 /run/log 目錄中,重啟系統(tǒng)會丟掉以前的日志信息。我們可以通過兩種方式讓 systemd-journald 服務(wù)把所有的日志都保存到文件中,這樣重新啟動后就不會丟掉以前的日志。
方法一:創(chuàng)建目錄 /var/log/journal,然后重啟日志服務(wù) systemd-journald.service。
方法二:修改配置文件 /etc/systemd/journald.conf,把 Storage=auto 改為 Storage=persistent,并取消注釋,然后重啟日志服務(wù) systemd-journald.service。

方法一的詳細(xì)操作
在 /var/log/ 下面創(chuàng)建名為 journal 的目錄,并設(shè)置權(quán)限即可:

$ sudo mkdir /var/log/journal
$ sudo chown root:systemd-journal /var/log/journal
$ sudo chmod 2775 /var/log/journal
$ sudo systemctl restart systemd-journald.service

之后 /run/log 下面就沒有 journal 的日志了,日志文件被保存在 /var/log/journal 目錄下:

wKgaoma8hKeAD5pvAAK5TdSJ9NY381.png

查看日志占據(jù)的磁盤空間

$ sudo journalctl --disk-usage

wKgZoma8hKeANKeJAAD9s35wmN4790.png

注意:無論是否設(shè)置把日志存儲到文件,都會得到 disk-usage。

清理日志數(shù)據(jù)
如果大家打算對 journal 記錄進(jìn)行清理,則可使用兩種不同方式。

使用 –vacuum-size 選項(xiàng)

使用 –vacuum-time 選項(xiàng)

如果使用 –vacuum-size 選項(xiàng),則可硬性指定日志的總體體積,意味著其會不斷刪除舊有記錄直到所占容量符合要求:

$ sudo journalctl --vacuum-size=1G

另一種方式則是使用 –vacuum-time 選項(xiàng)。任何早于這一時間點(diǎn)的條目都將被刪除。例如,去年之后的條目才能保留:

$ sudo journalctl --vacuum-time=1years

限定日志所能占用的最高容量

我們可以通過 /etc/systemd/journald.conf 文件來配置 systemd-journald 服務(wù)的行為。以下條目可用于限定日志數(shù)據(jù)可以占用的最大存儲數(shù)量和日志數(shù)據(jù)體積的膨脹速度:
SystemMaxUse=:指定journal所能使用的最高持久存儲容量。
SystemKeepFree=:指定journal在添加新條目時需要保留的剩余空間。
SystemMaxFileSize=:控制單一journal文件大小,符合要求方可被轉(zhuǎn)為持久存儲。
RuntimeMaxUse=:指定易失性存儲中的最大可用磁盤容量(/run文件系統(tǒng)之內(nèi))。
RuntimeKeepFree=:指定向易失性存儲內(nèi)寫入數(shù)據(jù)時為其它應(yīng)用保留的空間量(/run文件系統(tǒng)之內(nèi))。
RuntimeMaxFileSize=:指定單一journal文件可占用的最大易失性存儲容量(/run文件系統(tǒng)之內(nèi))。
通過設(shè)置上述值,大家可以控制 systemd-journald 服務(wù)對服務(wù)器空間的消耗及保留方式。

查看某次啟動后的日志

默認(rèn)情況下 systemd-journald 服務(wù)只保存本次啟動后的日志(重新啟動后丟掉以前的日志)。此時 -b 選項(xiàng)是沒啥用的。當(dāng)我們把 systemd-journald 服務(wù)收集到的日志保存到文件中之后,就可以通過下面的命令查看系統(tǒng)的重啟記錄:

$ journalctl --list-boots

wKgZoma8hKeAWgu7AAF9YNzi3bA653.png

此時我們就可以通過 -b 選項(xiàng)來選擇查看某次運(yùn)行過程中的日志:

$ sudo journalctl -b -1
或
$ sudo journalctl -b 9eaabbc25fe343999ef1024e6a16fb58

下面的命令都會輸出最后一次啟動后的日志信息:

$ sudo journalctl -b
$ sudo journalctl -b  0

查看指定時間段的日志

利用 --since 與 --until 選項(xiàng)設(shè)定時間段,二者分別負(fù)責(zé)指定給定時間之前與之后的日志記錄。時間值可以使用多種格式,比如下面的格式:

YYYY-MM-DD HHSS

如果我們要查詢 2018 年 3 月 26 日下午 8:20 之后的日志:

$ journalctl --since "2018-03-26 2000"

如果以上格式中的某些組成部分未進(jìn)行填寫,系統(tǒng)會直接進(jìn)行默認(rèn)填充。例如,如果日期部分未填寫,則會直接顯示當(dāng)前日期。如果時間部分未填寫,則缺省使用 "0000"(午夜)。秒字段亦可留空,默認(rèn)值為 "00",比如下面的命令:

$ journalctl --since "2018-03-26" --until "2018-03-26 03:00"

另外,journalctl 還能夠理解部分相對值及命名簡寫。例如,大家可以使用 "yesterday"、"today"、"tomorrow" 或者 "now" 等。
比如獲取昨天的日志數(shù)據(jù)可以使用下面的命令:

$ journalctl --since yesterday

要獲得早上 9:00 到一小時前這段時間內(nèi)的日志,可以使用下面的命令:

$ journalctl --since 09:00 --until "1 hour ago"

同時應(yīng)用 match 和時間過濾條件

實(shí)際的使用中更常見的用例是同時應(yīng)用 match 和時間條件,比如要過濾出某個時間段中 cron 服務(wù)的日志記錄:

$ sudo journalctl _SYSTEMD_UNIT=cron.service --since "2018-03-27" --until "2018-03-27 01:00"

wKgaoma8hKeASZ27AAIW6x-p-uo712.png

按 unit 過濾日志

systemd 把幾乎所有的任務(wù)都抽象成了 unit,因此我們可以方便的使用 -u 選項(xiàng)通過 unit 的名稱來過濾器日志記錄。查看某個 unit 的日志:

$ sudo journalctl -u nginx.service
$ sudo journalctl -u nginx.service --since today

還可以使用多個 -u 選項(xiàng)同時獲得多個 unit 的日志:

$ journalctl -u nginx.service -u php-fpm.service --since today

通過日志級別進(jìn)行過濾

除了通過 PRIORITY= 的方式,還可以通過 -p 選項(xiàng)來過濾日志的級別。可以指定的優(yōu)先級如下:
# 0: emerg
# 1: alert
# 2: crit
# 3: err
# 4: warning
# 5: notice
# 6: info
# 7: debug

$ sudo journalctl -p err

注意,這里指定的是優(yōu)先級的名稱。

實(shí)時更新日志

與 tail -f 類似,journalctl 支持 -f 選項(xiàng)來顯示實(shí)時的日志:

$ sudo journalctl -f

如果要查看某個 unit 的實(shí)時日志,再加上 -u 選項(xiàng)就可以了:

$ sudo journalctl -f -u prometheus.service

只顯示最新的 n 行

命令行選項(xiàng) -n 用來控制只顯示最新的 n 行日志,默認(rèn)是顯示尾部的最新 10 行日志:

$ sudo journalctl -n

也可以顯示尾部指定行數(shù)的日志:

$ sudo journalctl -n 20

下面則是顯示 cron.service 服務(wù)最新的三行日志:

$ journalctl -u cron.service -n 3

控制輸出

把結(jié)果重定向到標(biāo)準(zhǔn)輸出
默認(rèn)情況下,journalctl 會在 pager 內(nèi)顯示輸出結(jié)果。如果大家希望利用文本操作工具對數(shù)據(jù)進(jìn)行處理,則需要使用標(biāo)準(zhǔn)輸出。在這種情況下,我們需要使用 --no-pager 選項(xiàng)。

$ sudo journalctl --no-pager

這樣就可以把結(jié)果重定向到我們需要的地方(一般是磁盤文件或者是文本工具)。

格式化輸出的結(jié)果
如果大家需要對日志記錄進(jìn)行處理,可能需要使用更易使用的格式以簡化數(shù)據(jù)解析工作。幸運(yùn)的是,journalctl 能夠以多種格式進(jìn)行顯示,只須添加 -o 選項(xiàng)即可。-o 選項(xiàng)支持的類型如下:
short
這是默認(rèn)的格式,即經(jīng)典的 syslog 輸出格式。
short-iso
與 short 類似,強(qiáng)調(diào) ISO 8601 時間戳。
short-precise
與 short 類似,提供微秒級精度。
short-monotonic
與 short 類似,強(qiáng)調(diào)普通時間戳。
verbose
顯示全部字段,包括通常被內(nèi)部隱藏的字段。
export
適合傳輸或備份的二進(jìn)制格式。
json
標(biāo)準(zhǔn) json 格式,每行一條記錄。
json-pretty
適合閱讀的 json 格式。
json-sse
經(jīng)過包裝可以兼容 server-sent 事件的 json 格式。
cat
只顯示信息字段本身。

比如我們要以 json 格式輸出 cron.service 的最后一條日志:

$ sudo journalctl -u cron.service -n 1 --no-pager -o json

wKgZoma8hRSAPglZAAQQjdPPWD0453.png

而 json-pretty 的格式為:

wKgaoma8hSCAACZrAAeAnJFInQo172.png

按可執(zhí)行文件的路徑過濾

如果在參數(shù)中指定某個可執(zhí)行文件(二進(jìn)制文件或腳本文件),則 journalctl 會顯示與該可執(zhí)行文件相關(guān)的全部條目。比如可以顯示 /usr/lib/systemd/systemd 程序產(chǎn)生的日志:

$ sudo journalctl /usr/lib/systemd/systemd

也可以顯示 /usr/bin/bash 程序產(chǎn)生的日志:

$ sudo journalctl /usr/bin/bash

查看內(nèi)核日志

如果我們需要查看內(nèi)核日志,可以指定 -k 選項(xiàng),這樣輸出的結(jié)果中就只有內(nèi)核日志了。-k 選項(xiàng)是通過 -b 選項(xiàng)加上匹配條件 "_TRANSPORT=kernel" 實(shí)現(xiàn)的。下面是基本的用法:

$ sudo journalctl -k

總結(jié)

進(jìn)入 systemd 時代后,查看日志的方式也發(fā)生了變化,原因是 systemd 自帶了日志管理服務(wù)和工具。單就日志的查看來說,我們需要使用 journalctl 工具。它的好處是使用一個統(tǒng)一的工具來完成日志的查看功能,我們不用記很多的命令了。

鏈接:https://www.cnblogs.com/sparkdev/p/8795141.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11304

    瀏覽量

    209483
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    684

    瀏覽量

    22021
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    10642

原文標(biāo)題:高效linux 日志管理:journalctl命令

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    企業(yè)級的LInux系統(tǒng)日志管理

    企業(yè)級LInux系統(tǒng)日志管理
    發(fā)表于 05-29 11:33

    Linux系統(tǒng)日志管理

    Linux-系統(tǒng)日志
    發(fā)表于 06-04 17:24

    linux日志常用命令有哪些

    linux日志常用命令
    發(fā)表于 06-04 09:00

    Linux系統(tǒng)管理命令

    Linux系統(tǒng)管理命令 Linux系統(tǒng)管理命令  wall
    發(fā)表于 01-18 12:47 ?809次閱讀

    Linux系統(tǒng)管理命令整理及使用方法介紹

    linux命令是對Linux系統(tǒng)進(jìn)行管理命令。對于Linux系統(tǒng)來說,無論是中央處理器、內(nèi)存、
    的頭像 發(fā)表于 09-23 14:55 ?6840次閱讀

    Linux中mail命令的使用教程分享

    在這里整理一下Linux中mail命令的使用。mail也是一個常用的命令,我們在很多地方都要用到它,比如定時把系統(tǒng)狀況或日志發(fā)送到我們的郵箱里等等。
    發(fā)表于 03-25 16:01 ?9次下載

    Linux虛擬機(jī)tcpdump命令操作詳解

    Linux虛擬機(jī)tcpdump命令操作詳解
    發(fā)表于 08-12 09:50 ?23次下載

    Linux操作必備150個命令

    Linux 命令是對 Linux 系統(tǒng)進(jìn)行管理命令。對于 Linux 系統(tǒng)來說,無論是中央處理
    發(fā)表于 11-12 09:19 ?451次閱讀

    如何使用journalctl來讀取、監(jiān)控和分析Linux中的日志

    Systemd是大多數(shù)主要Linux發(fā)行版的默認(rèn)的初始化程序。Systemd的主要功能之一收集日志以及為分析日志提供工具。
    的頭像 發(fā)表于 12-23 16:44 ?4541次閱讀

    常用Linux命令介紹

    linux命令是對Linux系統(tǒng)進(jìn)行管理命令。對于Linux系統(tǒng)來說,無論是中央處理器、內(nèi)存、
    的頭像 發(fā)表于 02-09 14:31 ?1064次閱讀

    如何使用ip命令Linux中進(jìn)行網(wǎng)絡(luò)管理

    Linux中,'ip'命令管理網(wǎng)絡(luò)方面最強(qiáng)大的命令之一。該命令可以允許用戶在不使用任何其他網(wǎng)絡(luò)
    發(fā)表于 05-31 12:25 ?370次閱讀

    常用Linux命令要記牢!

    linux命令是對Linux系統(tǒng)進(jìn)行管理命令。對于Linux系統(tǒng)來說,無論是中央處理器、內(nèi)存、
    的頭像 發(fā)表于 08-07 15:31 ?652次閱讀

    shell命令linux命令一樣嗎

    結(jié)合在一起,形成一個相當(dāng)于面向過程的程序,即shell script,從而實(shí)現(xiàn)一些復(fù)雜的功能。 而Linux命令則是用來對Linux系統(tǒng)進(jìn)行管理
    的頭像 發(fā)表于 11-08 10:51 ?2876次閱讀

    Jtti:如何查看yum命令的錯誤日志來診斷問題?

    Linux系統(tǒng)中,當(dāng)yum命令無法正常工作時,查看錯誤日志是診斷問題的重要步驟。以下是一些方法,可以幫助你查看和分析yum命令的錯誤日志
    的頭像 發(fā)表于 10-14 15:51 ?229次閱讀

    Linux高頻命令終極指南

    -f journalctl /usr/bin/bash 4、管理日志 # 空間使用 journalctl --disk-usage # 保留500M
    的頭像 發(fā)表于 12-05 16:53 ?185次閱讀
    主站蜘蛛池模板: 6969精品视频在线观看| 手机看片自拍| 久久国内视频| 日韩欧美卡一卡二卡新区| 四虎影永久地址www| 国产亚洲新品一区二区| 奇米影视四色7777久久精品| 亚洲国产网址| 日本免费a级片| 午夜视频观看| 亚洲视频免费一区| 欧美一级视频在线观看欧美| 午夜在线观看福利| 一区二区三区免费在线| 日本午夜大片免费观看视频| 午夜激情福利| 男生女生靠逼视频| 久久ww| 国产精品久久久久久久牛牛| 亚洲三级视频在线观看| 国产单男| 黄在线网站| 欧美日韩a| 免费看片免| 亚洲成人高清在线观看| 成人亚洲精品| 在线视频一二三区| 欧美人与动欧交视频| 免费看国产一级片| 亚洲啊v| 午夜视频在线免费播放| 日本不卡免费高清一级视频| 久青草国产高清在线视频| 久久久久女人精品毛片| 亚洲аv电影天堂网| 午夜高清视频在线观看| 狠狠色噜噜狠狠狠狠米奇777| 国产一区二区三区在线观看影院 | 特黄色片| 天天操天天曰| 亚洲综合激情九月婷婷|