如何查看Linux命令历史记录?

使用 history 命令(最常用)

作用:直接查看当前用户的历史命令记录。
操作步骤

  1. 打开终端,输入:
    history
  2. 显示结果示例:
    1  cd ~/Documents
    2  ls -l
    3  sudo apt update
    ...(按时间倒序列出所有记录)

    高级用法

  • 显示最近10条记录:history 10
  • 清除当前会话记录:history -c(重启后恢复)
  • 执行历史命令:!编号(如 !3 重新执行第3条命令)

注意

  • 记录默认保存数量由 HISTSIZE 变量控制(通常1000~5000条),可通过 echo $HISTSIZE 查看。
  • 仅限当前用户查看自己的记录。

直接查看历史文件(持久化存储)

作用:查看系统永久保存的命令记录文件。
文件路径

  • Bash shell~/.bash_history(当前用户家目录下)
  • Zsh shell~/.zsh_history
  • Root用户/root/.bash_history

操作步骤

cat ~/.bash_history       # 查看所有记录
tail -n 20 ~/.bash_history # 查看最近20条

关键特性

  • 文件在用户退出终端时更新,实时操作需结合 history 命令。
  • 若记录缺失,检查 ~/.bashrc 是否包含 HISTFILEHISTSIZE 配置。

实时监控命令执行(调试场景)

方法

  1. 使用 script 命令全程录制
    script -a command_log.txt  # 开始录制(-a表示追加)
    exit                       # 结束录制
    cat command_log.txt        # 查看记录
  2. 通过 PROMPT_COMMAND 实时记录(需配置):
    ~/.bashrc 中添加:

    export PROMPT_COMMAND='history -a > /dev/null'

    执行 source ~/.bashrc 生效,使命令实时写入历史文件。


查看系统级日志(需管理员权限)

作用:审计所有用户的 sudo 命令或登录行为。
日志路径

  • /var/log/auth.log(Debian/Ubuntu)
  • /var/log/secure(CentOS/RHEL)

操作示例

sudo grep 'sudo.*COMMAND' /var/log/auth.log  # 过滤sudo命令
sudo tail -f /var/log/secure                # 实时监控登录与提权操作
```  示例**:  
```log
Aug 1 10:00:00 server sudo: user : TTY=pts/0 ; COMMAND=/usr/bin/apt update

其他实用技巧

  1. 反向搜索历史命令
    Ctrl + R 输入关键词,实时搜索历史记录(支持上下键切换)。
  2. 按时间查看历史
    ~/.bashrc 添加 HISTTIMEFORMAT="%F %T ",执行 source ~/.bashrc,后续 history 显示执行时间。
  3. 隔离敏感命令
    命令前加空格(如 mysql -u root -p)可跳过记录(需配置 HISTCONTROL=ignorespace)。

安全与隐私建议

  1. 权限管理
    • 普通用户无法查看他人的 ~/.bash_history 或系统日志(需 sudo)。
    • 敏感操作建议使用 ssh 密钥替代密码。
  2. 记录保护
    • 定期备份历史文件。
    • 清除记录:cat /dev/null > ~/.bash_history(谨慎操作)。
  3. 合规性
    企业环境中,使用审计工具(如 auditd)满足安全合规要求。

引用说明参考 Linux 官方文档(Bash手册)、man 手册页(man historyman bash)及常见运维实践,不同Shell(如Zsh、Fish)或发行版细节可能略有差异,建议结合具体环境验证。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9008.html

(0)
酷番叔酷番叔
上一篇 2025年7月28日 09:47
下一篇 2025年7月28日 10:01

相关推荐

  • 命令行移动文件夹?各系统通用方法!

    Windows系统方法1:命令提示符(CMD)移动文件夹使用 move 命令,语法:move "源文件夹路径" "目标文件夹路径"示例:move "C:\old\docs" "D:\backup\new_docs"若目标路径不存在……

    2025年8月4日
    3700
  • Windows CMD换行符处理必学技巧

    长命令换行输入(续行符)当命令过长需跨行书写时,使用 ^(脱字符) 作为续行符:echo 这是第一行 ^这是第二行 ^这是第三行执行效果:输出连续字符串:这是第一行 这是第二行 这是第三行注意事项:^ 后必须紧跟换行(直接按回车),不能有空格或其他字符,示例:多行安装Python包pip install req……

    2025年7月19日
    4600
  • 重要安全提示,你都知道吗?

    重要安全提示:时刻保持警惕,严格遵守操作规程,作业前必须检查个人防护装备,确保设备安全可靠,严禁违规操作,发现隐患立即上报,熟悉应急逃生路线,掌握基本急救知识,共同维护安全环境。

    2025年7月25日
    4200
  • 1602液晶屏写命令函数怎么用?

    1602液晶屏的写命令函数用于向屏幕发送控制指令,通过该函数设置显示模式、光标位置、清屏等操作,使用时需正确配置数据线和控制线(RS、RW、E),并严格遵守时序要求发送特定命令码。

    2025年8月9日
    4100
  • 管理策略怎么打开命令

    Windows系统中,通过快捷键Win+R打开运行窗口,输入“gpedit.

    2025年8月19日
    3200

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信