Linux 相关
系统日志的查看
步骤1:最基础的日志查看
# 查看最近的系统日志(最后10行)
sudo tail /var/log/syslog
# 如果要实时查看日志更新
sudo tail -f /var/log/syslog
步骤2:使用 journalctl 查看今天的日志
# 查看今天的日志
sudo journalctl --since "2025-02-14 00:00:00"
# 查看最近1小时的日志
sudo journalctl --since "1 hour ago"
步骤3:查看特定时间段的日志
# 查看特定时间范围的日志(比如最近30分钟)
sudo journalctl --since "2025-02-14 12:58:39" --until "2025-02-14 13:28:39"
步骤4:按严重程度查看日志
# 只查看错误和警告信息
sudo journalctl -p err..alert
# 查看各种级别的日志:
# emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), debug (7)
步骤5:查看特定服务的日志
# 列出所有服务单元
systemctl list-units --type=service
# 查看特定服务的日志(例如 SSH)
sudo journalctl -u ssh
# 查看特定服务的最新日志
sudo journalctl -u ssh -n 50
步骤6:搜索特定关键词
# 搜索包含"error"的日志
sudo journalctl | grep error
# 搜索最近包含"failed"的日志
sudo journalctl -n 1000 | grep failed
步骤7:查看启动相关日志
# 查看系统启动日志
sudo journalctl -b
# 查看内核日志
sudo dmesg
步骤8:查看其他重要日志文件
# 查看认证日志
sudo tail /var/log/auth.log
# 查看系统消息
sudo tail /var/log/messages
# 查看应用程序日志
sudo tail /var/log/apport.log
高级用法:
# 输出格式化的日志(更易读)
sudo journalctl -o json-pretty
# 显示日志占用的磁盘空间
sudo journalctl --disk-usage
# 查看最大的日志条目
sudo journalctl -r -o short-full -n 20
free(显示系统内存的使用情况)
# 以MB为单位显示内存使用情况
free -m
# 每2秒刷新一次内存使用情况
free -m -s 2
# 以人类可读的格式显示
free -h
# 显示详细信息(宽输出模式)
free -w
free:显示系统内存使用情况
-m:以兆字节(MB)为单位显示内存使用量
常用参数
-b
: 以字节为单位显示-k
: 以千字节为单位显示(KB)-m
: 以兆字节为单位显示(MB)-g
: 以吉字节为单位显示(GB)-h
: 以人类可读的格式显示(自动选择合适的单位)-s N
: 每N秒更新一次显示(持续刷新)-t
: 显示内存使用总计-w
: 宽输出模式
ps (显示系统中所有进程的详细信息)
# 显示进程树
ps -auxf
# 只显示指定用户的进程
ps -u username
# 显示特定进程 ID 的信息
ps -p PID
1. 命令的作用说明
ps -aux
: 显示系统中所有进程的详细信息ps
: Process Status,用于报告当前进程状态-aux
: 是三个选项的组合,显示所有用户的所有进程,包括没有控制终端的进程
ps -aux | grep python
: 过滤仅显示包含 "python" 的进程信息
2. 常用参数
-a
: 显示所有用户的进程,而不仅仅是当前用户的进程-u
: 显示进程的详细信息(用户为主的格式)-x
: 显示没有控制终端的进程其他常用参数:
-f
: 显示完整格式的输出-e
: 显示所有进程-o
: 自定义输出格式
tail 命令
作用: tail命令用于查看文件的末尾内容。最常用于实时监控日志文件,查看最新的系统消息和故障排查。
常用参数:
-f
: 实时监控文件更新-n N
: 显示最后N行内容-c N
: 显示最后N个字节-q
: 不显示文件名-v
: 显示详细信息--pid=PID
: 与-f配合使用,进程结束后退出
实际案例:
# 基本用法(默认显示最后10行)
$ tail /var/log/syslog
Feb 14 14:01:55 uluckyXH systemd[1]: Starting System Logging Service...
# 显示最后20行
$ tail -n 20 /var/log/syslog
Feb 14 14:01:55 uluckyXH systemd[1]: Started System Logging Service.
# 实时监控文件更新
$ tail -f /var/log/syslog
Feb 14 14:01:55 uluckyXH rsyslogd[864]: [origin software="rsyslogd" swVersion="8.32.0"]
# 显示最后100个字节
$ tail -c 100 /var/log/syslog
...log content...
# 显示详细信息(带文件名)
$ tail -v /var/log/syslog
==> /var/log/syslog <==
Feb 14 14:01:55 uluckyXH systemd[1]: Started System Logging Service.
# 不显示文件名
$ tail -q /var/log/syslog
Feb 14 14:01:55 uluckyXH systemd[1]: Started System Logging Service.
journalctl 命令
作用
journalctl是systemd系统的日志管理工具,用于查询和显示系统日志。它集中管理所有已记录的日志,包括内核日志、系统日志、服务日志等,并提供强大的过滤和查询功能。
常用参数
--since
/--until
: 指定时间范围-f
: 实时追踪最新日志-n N
: 显示最后N行日志-u UNIT
: 显示指定服务的日志-p PRIORITY
: 按优先级过滤日志-b
: 显示本次启动的日志-r
: 反向显示日志(最新的在前)
实际案例
# 基本用法(查看所有日志)
$ journalctl
Feb 14 14:06:22 uluckyXH systemd[1]: Started System Logging Service.
# 查看最近1小时的日志
$ journalctl --since "1 hour ago"
Feb 14 14:06:22 uluckyXH sshd[1234]: Accepted password for uluckyXH
# 查看特定服务的日志
$ journalctl -u ssh
Feb 14 14:06:22 uluckyXH sshd[1234]: Server listening on 0.0.0.0 port 22
# 实时监控日志
$ journalctl -f
Feb 14 14:06:22 uluckyXH systemd[1]: Starting Daily tasks...
# 只看错误级别的日志
$ journalctl -p err
Feb 14 14:06:22 uluckyXH kernel: CPU: Critical temperature above threshold
# 查看本次启动的日志
$ journalctl -b
Feb 14 14:06:22 uluckyXH kernel: Linux version 5.4.0-42-generic
netstat命令
作用
netstat(network statistics)命令用于显示网络状态。它可以显示网络连接、路由表、接口统计等网络相关信息,是Linux系统中常用的网络调试工具。
常用参数
-t
: 显示TCP连接-u
: 显示UDP连接-n
: 显示数字地址而非主机名-l
: 仅显示监听连接-p
: 显示进程信息-a
: 显示所有连接(包括监听和未监听)-r
: 显示路由表
实际案例
# 显示所有活动的TCP连接
$ netstat -tn
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.1.100:22 192.168.1.200:54321 ESTABLISHED
# 显示所有监听端口
$ netstat -tunl
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
# 显示进程信息(需要root权限)
$ sudo netstat -tnp
Proto Process Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.1.100:22 192.168.1.200:54321 ESTABLISHED 1234/sshd
# 显示路由表信息
$ netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
# 显示所有网络连接
$ netstat -a
Proto Local Address Foreign Address State
tcp 0.0.0.0:ssh 0.0.0.0:* LISTEN
# 显示统计信息
$ netstat -s
Tcp:
373 active connections openings
2 failed connection attempts
ss命令
作用
ss(socket statistics)命令是用来显示处于活动状态的套接字信息的工具。它是netstat命令的现代替代品,能够显示更多的TCP和状态信息,且执行速度更快。
常用参数
-t
: 显示TCP连接-u
: 显示UDP连接-l
: 显示监听状态的连接-n
: 显示数字地址和端口-p
: 显示进程使用的socket-s
: 显示socket摘要-a
: 显示所有socket
实际案例
# 显示所有TCP连接
$ ss -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.1.100:ssh 192.168.1.200:52471
# 查看系统监听的端口
$ ss -tunl
Netid State Recv-Q Send-Q Local Address:Port
tcp LISTEN 0 128 0.0.0.0:22
# 显示进程信息
$ sudo ss -tp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 0 192.168.1.100:22 192.168.1.200:52471 users:(("sshd",pid=1234))
# 查看统计信息
$ ss -s
Total: 186
TCP: 6 (estab 1, closed 0, orphaned 0, timewait 0)
# 查看特定端口
$ ss -tnlp | grep ":80"
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
# 显示所有状态的连接
$ ss -ta
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*