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启动U盘?

    下载Linux ISO镜像,使用Rufus或Etcher等工具写入U盘,注意:该操作会清空U盘数据,完成后可通过U盘启动电脑体验或安装Linux系统。

    2025年8月9日
    8300
  • 如何改变linux终端颜色设置

    过编辑~/.bashrc文件,添加如`PS1=’\[\e[32;

    2025年8月18日
    12200
  • 如何修改Linux内核版本号?具体操作步骤与注意事项详解?

    Linux内核版本号是标识内核迭代的重要信息,通常由主版本号(VERSION)、次版本号(PATCHLEVEL)、修订号(SUBLEVEL)和附加号(EXTRAVERSION)组成,格式如“5.15.0-rc1”,在开发、测试或特定场景下,可能需要修改内核版本号,例如自定义发行版、功能验证或版本标记,以下是详细……

    2025年9月29日
    9900
  • cdlinux如何拷贝

    cdlinux中,可通过挂载相关设备或使用dd命令等方式进行拷贝,具体操作需

    2025年8月17日
    10500
  • Linux不同场景粘贴技巧?

    图形界面下的粘贴适用于GNOME、KDE、XFce等桌面环境:快捷键粘贴Ctrl + V:通用粘贴快捷键(适用于文本编辑器、浏览器等大部分应用),Ctrl + Shift + V:部分应用(如LibreOffice)用此粘贴无格式文本,鼠标操作右键单击 → 选择“粘贴”(几乎所有图形应用支持),鼠标中键(滚轮……

    2025年7月27日
    10000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信