Linux系统里如何查看命令执行历史记录和系统操作记录?

在Linux系统中,“记录”涵盖范围广泛,包括用户执行的命令历史、系统运行日志、用户登录活动、进程运行状态以及网络连接信息等,查看这些记录是系统管理和故障排查的基础操作,不同类型的记录需通过特定命令或工具进行查看,以下从常见记录类型出发,详细介绍查看方法及常用命令。

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”的日志行。

用户登录记录

用户登录记录包括当前在线用户和历史登录信息,常用命令如下:

linux如何查看记录

  • 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:动态实时查看进程(htoptop更友好,支持颜色、鼠标操作),默认按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:结合grepdate命令实现,首先通过date获取1小时前的时间格式,再用grep过滤日志,例如查看/var/log/syslog中的错误日志:

linux如何查看记录

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

(0)
酷番叔酷番叔
上一篇 2025年10月4日 05:15
下一篇 2025年10月4日 05:28

相关推荐

  • 如何解决Ubuntu 22.04+编译器兼容问题?

    在Linux系统下安装ns2(Network Simulator 2)需要遵循系统依赖安装、源码编译等步骤,以下是详细操作指南,适用于Ubuntu/Debian及CentOS/RHEL等主流发行版:安装前准备系统要求推荐Ubuntu 20.04/22.04或CentOS 7/8至少2GB空闲磁盘空间已安装gcc……

    2025年7月14日
    6000
  • Linux系统如何登录Oracle数据库?

    在Linux系统中登录Oracle数据库通常需要完成环境配置、服务启动及客户端连接等步骤,具体操作因Oracle版本和安装方式略有差异,但核心流程基本一致,以下是详细操作指南:前置条件检查Oracle安装验证:确保Oracle数据库软件已正确安装,可通过命令$ORACLE_HOME/bin/sqlplus -v……

    2025年8月23日
    5500
  • Linux系统如何安装pacman包管理器?

    Linux系统中的pacman是Arch Linux及其衍生发行版(如Manjaro、EndeavourOS等)的核心包管理器,以其简洁的命令、高效的依赖处理和快速的软件包更新而闻名,对于希望体验Arch生态或使用其软件包管理的用户来说,安装并掌握pacman是重要一步,本文将详细介绍在不同Linux环境下安装……

    2025年8月22日
    5500
  • 少了这一步安装准出错?

    选择Linux发行版新手推荐:Ubuntu(用户友好)、Linux Mint(类Windows界面)、Zorin OS(无缝过渡)中阶用户:Fedora(前沿技术)、Debian(稳定性优先)权威数据参考:根据DistroWatch近一年排名,Ubuntu、Mint、Debian为最受欢迎发行版前三(2023数……

    2025年7月13日
    7400
  • Linux如何高效截图录屏?

    原生截图工具(无需安装)全局快捷键(适用大多数桌面环境)PrtSc:捕获整个屏幕,图片自动保存至~/Pictures/Alt + PrtSc:仅捕获当前活动窗口Shift + PrtSc:自定义区域截图(光标变为十字,拖选区域)注:GNOME、KDE Plasma、Xfce等主流环境均支持终端工具scrot……

    2025年7月9日
    7300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信