linux命令与日志
linux命令与日志详细介绍
在 Linux 系统中,处理日志文件是系统管理和故障排查的重要环节。以下是常用的 Linux 命令及日志相关操作的总结,涵盖日志查看、分析、管理等核心功能:
一、常用日志文件位置
Linux 日志文件通常存储在以下目录(根据系统和服务不同有所差异):
- 系统日志:
/var/log/syslog(Debian/Ubuntu)、/var/log/messages(RHEL/CentOS) - 认证日志:
/var/log/auth.log(登录认证信息) - 内核日志:
/var/log/kern.log(内核输出) - 服务日志:如
/var/log/nginx/(Nginx 日志)、/var/log/httpd/(Apache 日志)、/var/log/syslog-ng/(syslog-ng 服务日志) - systemd 日志:通过
journalctl命令查看,而非传统文件 - 用户日志:
/home/<用户名>/.xsession.log(用户会话日志)
二、基础日志查看命令
1.
查看日志内容
cat:一次性显示整个文件(适合小文件)bash/var/log/syslogless/more:分页查看,支持搜索(/关键字)和滚动bash/var/log/auth.logtail:查看文件尾部内容(默认最后 10 行)- 实时监控日志(新增内容自动显示):bash
/var/log/syslog/var/log/app.log
- 查看最后 N 行:bash
/var/log/messages
- 实时监控日志(新增内容自动显示):bash
2.
过滤日志(关键字搜索)
grep:按关键字过滤(支持正则表达式)bash/var/log/app.log/var/log/syslog
access.log
egrep:扩展正则表达式(等价于grep -E)bash/var/log/messages
3.
分析日志数据
awk:按字段处理日志(日志通常有固定格式)bashaccess.log
sed:文本替换或删除(如清理日志中的敏感信息)bashold.log new.logconfig.log
sort/uniq:排序和去重bashaccess.log
4.
统计日志信息
wc:统计行数、单词数、字符数bash/var/log/syslog/var/log/app.log
du:查看日志文件大小bash/var/log/syslog/var/log/
三、systemd 日志(journalctl)
现代 Linux 系统(使用 systemd)通过journalctl管理日志,而非传统文件:
- 查看所有日志:bash
journalctljournalctl errcrit
- 按时间过滤:bash
journalctljournalctl
- 按服务过滤:bash
journalctl nginx.service - 实时监控:bash
journalctl
四、日志管理工具
1.
日志轮转(logrotate)
用于管理日志文件大小,避免占用过多磁盘空间,配置文件在/etc/logrotate.conf或/etc/logrotate.d/目录:
- 手动执行轮转:bash
/etc/logrotate.conf
2.
日志服务配置
- syslog-ng/rsyslog:传统日志服务,配置文件为
/etc/syslog-ng/syslog-ng.conf或/etc/rsyslog.conf,可定义日志接收、过滤、存储规则。 - 调整日志级别:修改服务配置(如 Nginx 的
log_level)或系统日志服务配置,控制输出日志的详细程度(如debug、info、warn、error)。
五、实战示例
- 实时监控并过滤错误日志:
bash/var/log/app.log - 统计今天的访问日志 IP 频率:
bashaccess.log - 清理超过 7 天的旧日志:
bash/var/log/ f +7
总结
- 查看日志:
cat/less/tail(适合传统文件日志),journalctl(systemd 日志)。 - 过滤分析:
grep(关键字)、awk(字段处理)、sed(文本替换)。 - 管理维护:
logrotate(轮转)、systemctl(日志服务控制)。 - 实时监控:
tail -f(文件)、journalctl -f(systemd)。
根据具体场景选择合适的工具,结合管道(|)和重定向(>, >>)可高效处理日志数据。