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

相关推荐

  • Linux如何隐藏文件夹?

    方法1:通过命名规则隐藏(推荐)原理:Linux默认隐藏以点()开头的文件/文件夹,步骤:打开终端(Ctrl+Alt+T),进入目标目录: cd /path/to/parent_directory重命名文件夹(以隐藏文件夹 private 为例): mv private .private效果:终端中通过 ls……

    2025年6月22日
    13000
  • linux如何打开网址

    Linux 中,可通过浏览器如 Firefox、Chrome 输入网址打开;

    2025年8月16日
    9200
  • Linux安装.gz文件的具体操作步骤是怎样的?

    在Linux系统中,.gz文件是通过gzip工具压缩的文件格式,通常用于减小文件体积以便传输或存储,与.rpm、.deb等二进制安装包不同,.gz文件本身并非可直接执行的安装程序,而是需要先解压,再根据文件内容进行后续操作,安装.gz文件的核心步骤包括解压、配置(如需要)、编译(如需要)及部署,具体方法取决于文……

    2025年8月25日
    10300
  • Linux安装软件命令怎么选?

    安装前的准备更新系统安装前先更新软件源和已安装包,避免依赖冲突:# Debian/Ubuntusudo apt update && sudo apt upgrade# Red Hat/CentOSsudo dnf update # 或 sudo yum update# Arch/Manjaros……

    2025年7月17日
    10700
  • Linux如何打开网络端口?命令与配置方法详解?

    在Linux系统中,网络端口是应用程序与外部通信的入口,“打开端口”通常指允许特定端口的流量通过防火墙,并确保有进程在该端口上监听,本文将详细介绍Linux中打开网络端口的常用方法,包括端口状态检查、防火墙配置及常见问题排查,端口基础概念网络端口用16位整数表示(0-65535),其中0-1023为知名端口(如……

    2025年10月7日
    9600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信