如何查看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

相关推荐

  • cmd命令行中如何实现换行操作?

    在Windows命令提示符(CMD)中,换行操作根据场景不同有多种实现方式,主要包括单行命令续行、批处理脚本多行命令编写、输出内容换行显示等,掌握这些方法能有效提升命令行操作和脚本编写的效率,以下从不同场景详细说明具体操作方式,单行命令过长时的换行输入当需要在CMD中输入一条超过一行长度的命令时,可通过续行符……

    2025年8月30日
    9800
  • 安全基线检查如何

    安全基线检查如何有效保障系统安全,是企业和组织在数字化转型过程中必须重视的核心环节,安全基线检查通过对比系统配置与既定安全标准,识别潜在风险并推动整改,从而构建起标准化的安全防护体系,其实施过程需遵循系统性、规范性和持续性的原则,确保检查工作覆盖全面、结果可靠、整改到位,明确安全基线的制定依据安全基线的制定是检……

    2025年11月30日
    6400
  • Oracle SQLPlus/SQL Developer命令窗口使用指南

    Oracle命令窗口通过SQLPlus(命令行启动sqlplus)或SQL Developer(图形界面启动程序)访问,用于执行SQL语句、管理数据库对象和运行脚本。

    2025年7月6日
    7300
  • 安全中心如何实现全方位安全防护?

    安全中心是现代数字化生活中不可或缺的安全防护工具,它通过集成化的管理功能,为用户设备、数据及网络环境提供全方位的安全保障,无论是个人手机、电脑,还是企业级服务器、办公网络,安全中心都能通过实时监控、风险扫描、权限管控等手段,有效抵御恶意软件、网络攻击、数据泄露等威胁,帮助用户构建安全可靠的使用环境,安全中心的核……

    2025年10月22日
    6000
  • 安全数据交换系统的核心功能与安全机制是什么?

    在数字化转型浪潮下,数据已成为核心生产要素,跨组织、跨平台的数据交换需求日益频繁,数据在流动过程中面临泄露、篡改、滥用等多重安全风险,传统数据传输方式(如FTP、邮件附件)难以满足现代场景下的安全合规要求,安全数据交换系统应运而生,它通过集成加密技术、访问控制、审计追溯等核心能力,构建起“可信、可控、可追溯”的……

    2025年11月16日
    5200

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信