下载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密钥对