在Linux系统中,“记录”涵盖范围广泛,包括用户执行的命令历史、系统运行日志、用户登录活动、进程运行状态以及网络连接信息等,查看这些记录是系统管理和故障排查的基础操作,不同类型的记录需通过特定命令或工具进行查看,以下从常见记录类型出发,详细介绍查看方法及常用命令。
命令历史记录
命令历史记录了用户在终端中执行过的命令,默认保存在用户主目录的.bash_history
文件中(使用bash shell时),通过history
命令可查看历史命令列表,常用选项如下:
history n
:显示最近n条命令,如history 10
查看最近10条。!n
:执行历史命令中第n条命令,如!5
执行第5条。history -c
:清空当前会话的历史命令(仅影响内存,不删除文件)。history -a
:将当前会话的历史命令追加到.bash_history
文件。
环境变量HISTSIZE
控制历史命令保存条数(默认1000),HISTTIMEFORMAT
可显示命令执行时间,如设置export HISTTIMEFORMAT="%F %T "
后,history
会显示“时间 命令编号 命令内容”。
系统日志记录
系统日志记录了内核、服务、应用程序的运行状态,通常存储在/var/log
目录下,不同Linux发行版日志文件名略有差异:
日志类型 | 常见文件路径 | |
---|---|---|
系统通用日志 | /var/log/syslog (Ubuntu) |
系统服务、内核消息、应用程序日志 |
系统通用日志 | /var/log/messages (CentOS) |
同上(CentOS/RHEL系列) |
认证日志 | /var/log/auth.log (Ubuntu) |
用户登录、sudo操作、SSH连接记录 |
认证日志 | /var/log/secure (CentOS) |
同上(CentOS/RHEL系列) |
内核日志 | /var/log/kern.log |
内核错误、驱动加载信息 |
应用日志(如Nginx) | /var/log/nginx/access.log |
Nginx访问请求日志 |
查看日志常用命令:
cat
:查看全部内容,如cat /var/log/syslog
。less
:分页查看(支持上下翻页、搜索),如less /var/log/messages
。tail
:查看末尾内容,tail -f
可实时跟踪日志更新(如tail -f /var/log/auth.log
实时查看登录日志)。grep
:过滤关键字,如grep "error" /var/log/syslog
查找包含“error”的日志行。
用户登录记录
用户登录记录包括当前在线用户和历史登录信息,常用命令如下:
who
:显示当前登录用户、终端、登录时间和IP,如who
输出“user pts/0 2023-10-01 10:00 (192.168.1.100)”。w
:比who
更详细,显示用户当前执行的进程及系统负载,如w
会列出“USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT”。last
:查看历史登录记录(读取/var/log/wtmp
文件),显示用户名、终端、登录时间、IP和退出时间,如last -n 10
显示最近10条登录记录。lastb
:查看失败的登录尝试(读取/var/log/btmp
文件),用于排查异常登录。lastlog
:显示每个用户的最后一次登录时间(读取/var/log/lastlog
文件),如lastlog -u username
查看指定用户。
进程记录
进程记录指当前系统运行的进程信息,用于监控进程状态、资源占用等:
ps
:静态查看进程,常用选项aux
(显示所有进程详细信息,包括CPU、内存占用),如ps aux | grep nginx
过滤Nginx相关进程。top
/htop
:动态实时查看进程(htop
比top
更友好,支持颜色、鼠标操作),默认按CPU占用排序,可按P
(CPU)、M
(内存)切换排序字段。pgrep
:根据进程名查找进程ID(PID),如pgrep -f "nginx"
查找包含“nginx”的进程PID。
网络连接记录
网络连接记录查看端口监听、连接状态等信息,用于排查端口占用、异常连接:
netstat
:传统网络工具,常用选项-tuln
(显示监听的TCP/UDP端口)、-an
(显示所有连接,不解析域名),如netstat -tuln | grep ":80"
查看80端口监听状态。ss
:新替代netstat
的工具(更高效),选项与netstat
类似,如ss -tuln | grep ":80"
。lsof
:查看端口占用进程,如lsof -i :80
显示占用80端口的进程PID、名称等。
相关问答FAQs
Q1:如何永久保存命令历史记录,避免终端关闭后丢失?
A:通过修改shell配置文件(如.bashrc
或.bash_profile
)实现,编辑文件(vim ~/.bashrc
),添加以下配置:
export HISTSIZE=10000 # 设置历史命令保存条数 export HISTFILESIZE=20000 # 设置历史文件大小 export HISTCONTROL=ignoredups # 忽略重复命令 export HISTTIMEFORMAT="%F %T " # 显示命令执行时间 shopt -s histappend # 追加历史记录,而非覆盖
保存后执行source ~/.bashrc
生效,此后命令历史会永久保存到.bash_history
文件。
Q2:如何查看系统日志中最近1小时内包含“error”关键字的日志?
A:结合grep
和date
命令实现,首先通过date
获取1小时前的时间格式,再用grep
过滤日志,例如查看/var/log/syslog
中的错误日志:
grep "$(date -d '1 hour ago' '+%b %d %H:%M').*error" /var/log/syslog
或使用journalctl
(systemd系统,适用于Ubuntu 16.04+、CentOS 7+):
journalctl --since "1 hour ago" --priority=err
其中--since
指定时间范围,--priority=err
过滤错误级别日志(可选优先级:emerg、alert、crit、err、warning、notice、info、debug)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/35527.html