linux系统日志查看命令journalctl详解

下载linux系统基本都是用systemd启动系统并管理进程

journalctl可以查看所有的系统日志文件,由于日志信息量很大,journalctl还提供了各种参数帮助用户更快速的定位到日志信息

默认情况下,用户都可以访问自己的日志。对于系统主日志和其他用户的日志,仅限于有权限的用户访问,比如root用户,wheel组和systemd组的用户

下面我们来看看journalctl命令的用法

journalctl #用来查看所有日志,默认显示本次启动的所有日志
journalctl -r #-r参数表示反序输出,从新到旧,默认是从旧到新
journalctl -k #查看内核日志
journalctl -f #跟踪日志文件,会实时输出最新日志
journalctl -n 数字 #指定输出显示的大小

限制指定时间内的事件日志

journalctl --since 1 hour ago

查看1小时前到现在的日志,除了这样可以直接使用"yesterday"、"today"、"tomorrow"或"now"

journalctl --since yesterday

查看昨天的日志

journalctl --since "2022-07-28 10:00:00" --until "2022-07-29 10:00:00"

查看昨天10点到今天10点的日志

journalctl -u kubelet

查看kubelet服务的日志

journalctl _PID=1

根据进程ID查询


默认情况,journal输出进入分页模式,用户可以在终端上调整显示的内容,如果要不需要分页,需要加上--no-pager参数

以Json格式输出

通过-o参数,可以设置为json格式输出,这对于其他接收json格式的日志分析工具非常友好

journalctl -p 5 --no-pager -o json

使用json-pretty则对于管理员查看日志非常易读

journalctl -p 5 --no-pager -o json-pretty

支持的各种格式如下:

cat: 只显示信息字段本身。
export: 适合传输或备份的二进制格式。
json: 标准JSON,每行一个条目。
json-pretty: JSON格式,适合人类阅读习惯。
json-sse: JSON格式,经过打包以兼容server-sent事件。
short: 默认syslog类输出格式。
short-iso: 默认格式,强调显示ISO 8601挂钟时间戳。
short-monotonic: 默认格式,提供普通时间戳。
short-precise: 默认格式,提供微秒级精度。
verbose: 显示该条目的全部可用journal字段,包括通常被内部隐藏的字段

journalctl其它功能

查看日志占用的磁盘空间

journalctl --disk-usage
Archived and active journals take up 2.8G in the file system.

设置日志占用的空间

journalctl --vacuum-size=500M

设置日志保存时间

journalctl --vacuum-time=1month

journalctl清空删除日志

由于Linux是一个非常敏感的操作系统,若删除文件错误,很容易造成系统崩溃。

所以,清理journalctl日志的方法,请按日期、允许保留的容量进行删除。

journalctl --vacuum-time=2d
journalctl --vacuum-size=500M

其他日志命令

tail /var/log/messages            //系统主日志文件
tail -20 /var/log/messages        //查看20行日志文件
tail -f /var/log/messages         //动态查看日志文件的尾部
tail /var/log/secure              //认证、安全
tail /var/log/maillog             //跟邮件postfix相关
tail /var/log/cron                //crond、at进程产生的日志
tail /var/log/dmesg               //和系统启动相关
tail /var/log/audit/audit.log     //系统审计日志
tail /var/log/yum.log             //查看yum日志
tail /var/log/mysqld.log          //查看MySQL日志
tail /var/log/xferlog             //和访问FTP服务器相关
w /var/log/wtmp                   //当前登录的用户(命令:w)
last /var/log/btmp                //最近登录的用户(命令last)
lastlog /var/log/lastlog          //所有用户的登录情况(命令lastlog)

最后是journalctl命令帮助文档

journalctl [选项...] [匹配项...]

查询日志。

选项:
     --system                显示系统日志
     --user                  显示当前用户的用户日志
  -M --machine=CONTAINER     对本地容器进行操作
  -S --since=DATE            显示不早于指定日期的条目
  -U --until=DATE            显示不晚于指定日期的条目
  -c --cursor=CURSOR         从指定的游标开始显示条目
     --after-cursor=CURSOR   显示指定游标之后的条目
     --show-cursor           在所有条目后打印游标
     --cursor-file=FILE      显示文件中游标后的条目并更新文件
  -b --boot[=ID]             显示当前启动或指定的启动
     --list-boots            显示有关记录启动的简洁信息
  -k --dmesg                 显示当前启动的内核消息日志
  -u --unit=UNIT             显示指定单元的日志
     --user-unit=UNIT        显示指定用户单元的日志
  -t --identifier=STRING     显示具有指定syslog标识符的条目
  -p --priority=RANGE        显示具有指定优先级的条目
     --facility=FACILITY...  显示具有指定设施的条目
  -g --grep=PATTERN          显示与PATTERN匹配的MESSAGE的条目
     --case-sensitive[=BOOL] 强制进行大小写敏感或不敏感的匹配
  -e --pager-end             在分页器中立即跳到末尾
  -f --follow                跟踪日志
  -n --lines[=INTEGER]       要显示的日志条目数量
     --no-tail               即使在跟踪模式下也显示所有行
  -r --reverse               先显示最新的条目
  -o --output=STRING         改变日志输出模式 (short, short-precise,
                               short-iso, short-iso-precise, short-full,
                               short-monotonic, short-unix, verbose, export,
                               json, json-pretty, json-sse, json-seq, cat,
                               with-unit)
     --output-fields=LIST    在verbose/export/json模式下选择要打印的字段
     --utc                   以协调世界时(UTC)表示时间
  -x --catalog               在可用的地方添加消息解释
     --no-full               缩略字段
  -a --all                   显示所有字段,包括长和不可打印的
  -q --quiet                 不显示信息消息和权限警告
     --no-pager              不将输出管道输出到分页器
     --no-hostname           抑制主机名字段的输出
  -m --merge                 显示所有可用日志的条目
  -D --directory=PATH        显示来自目录的日志文件
     --file=PATH             显示日志文件
     --root=ROOT             在根目录下操作文件
     --namespace=NAMESPACE   显示指定命名空间的日志数据
     --interval=TIME         更改FSS密封键的时间间隔
     --verify-key=KEY        指定FSS验证键
     --force                 使用--setup-keys覆盖FSS密钥对
命令:
  -h --help                  显示此帮助文本
     --version               显示包版本
  -N --fields                列出当前使用的所有字段名称
  -F --field=FIELD           列出指定字段采取的所有值
     --disk-usage            显示所有日志文件的总磁盘使用量
     --vacuum-size=BYTES     将磁盘使用量减少到指定大小以下
     --vacuum-files=INT      只保留指定数量的日志文件
     --vacuum-time=TIME      删除早于指定时间的日志文件
     --verify                验证日志文件的一致性
     --sync                  将未写入的日志消息同步到磁盘
     --relinquish-var        停止记录到磁盘,记录到临时文件系统
     --smart-relinquish-var  类似,但如果日志目录在根挂载上,则无操作
     --flush                 将所有日志数据从 /run 刷新到 /var
     --rotate                请求立即旋转日志文件
     --header                显示日志头信息
     --list-catalog          在目录中显示所有消息ID
     --dump-catalog          显示消息目录中的条目
     --update-catalog        更新消息目录数据库
     --setup-keys            生成新的FSS密钥对


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/869.html