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

相关推荐

  • 如何查看当前目录总大小

    命令行工具(终端操作)df 命令(磁盘空间概览)作用:查看文件系统的整体磁盘使用情况(挂载点、总容量、已用空间、可用空间等),常用参数:-h:以人类可读格式显示(GB/MB)-T:显示文件系统类型(如ext4、xfs)–total:汇总所有文件系统的总使用量示例:df -hT输出示例:文件系统 类型 容量 已……

    2025年7月4日
    5500
  • 当前用户密码?非root!

    在Linux系统中,”超级用户”(又称root用户)拥有系统的最高权限,可执行所有操作(包括修改核心文件、安装全局软件等),但滥用root权限极易导致系统崩溃或安全漏洞,请严格遵循以下专业操作指南:成为超级用户的3种安全方式方法1:临时切换root(推荐)# 或执行单条root命令sudo rm /path/t……

    2025年7月24日
    4100
  • 光盘/USB启动安装Linux教程

    准备Linux安装介质(光盘或USB),重启电脑,开机时按特定键(如F12、F2、ESC)进入启动菜单或BIOS/UEFI设置,选择该介质为第一启动项,保存退出后电脑将从介质启动,运行Linux安装程序,按提示完成安装。

    2025年7月21日
    3700
  • AppImage如何轻松运行于任何电脑?

    Linux QQ登录详细指南在Linux系统中登录QQ,目前主要有三种可靠方式:官方原生版本、Wine兼容方案和第三方开源客户端,以下是具体操作步骤及注意事项:官方原生QQ for Linux(推荐首选)适用系统:Ubuntu/Debian、Arch、Fedora等主流发行版优势:腾讯官方维护,安全性高,无兼容……

    2025年7月1日
    4800
  • Linux如何调整文本大小写?

    在Linux系统中,调整文本大小写是常见的文本处理需求,尤其在日志分析、数据清洗、脚本编写等场景中,Linux提供了多种命令行工具来实现大小写转换,每种工具各有特点,可根据需求选择使用,以下是常用方法的详细介绍,使用tr命令进行字符转换tr(translate)是Linux中用于字符转换的基础工具,通过简单的字……

    2025年10月7日
    1000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信