游乐游手机版
首页/系统平台/文章详情

Linux history命令显示日期时间的方法详解

时间:2026-06-24 22:18
Linux 系统中的 history 命令堪称运维人员的“命令记忆库”——它会忠实记录你在 bash 中敲下的每一条指令,并保存至 bash_history 文件。然而,默认情况下 history 只输出命令本身,不会显示每条命令的执行时间。这在排查问题时往往显得不够用:你明明记得昨天执行过某个操

Linux 系统中的 history 命令堪称运维人员的“命令记忆库”——它会忠实记录你在 bash 中敲下的每一条指令,并保存至 .bash_history 文件。然而,默认情况下 history 只输出命令本身,不会显示每条命令的执行时间。这在排查问题时往往显得不够用:你明明记得昨天执行过某个操作,翻遍历史记录却无法确认具体时间点。

其实 history 内部是保存时间戳的,只是输出时默认隐藏了。它依赖一个名为 HISTTIMEFORMAT 的环境变量,该变量控制时间格式的显示方式。如果变量未设置或为空,系统就会按“简洁”模式处理——仅输出命令,不附带时间。一旦你配置了 HISTTIMEFORMAT,系统会借助 strftime 函数将时间戳格式化为可读字符串。获取时间戳后,结合历史记录回溯问题,排查效率会大幅提升。

具体如何配置?根据你的需求,有三种不同级别的设置方法:临时设置(仅当前会话有效)、永久设置当前用户、永久设置所有用户。无论选择哪种方式,核心都在于为 HISTTIMEFORMAT 指定合适的格式字符串。常用的格式包括:

  • %T:显示时间(HH:MM:SS)
  • %F:显示日期(YYYY-MM-DD,ISO 8601 标准格式)

举个例子,默认的 history 输出如下:

# history
 1  yum install -y mysql-server mysql-client
 2  service mysqld start
 3  sysdig proc.name=sshd
 4  sysdig -c topprocs_net
 5  sysdig proc.name=sshd
 6  sysdig proc.name=sshd | more
 7  sysdig fd.name=/var/log/auth.log | more
 8  sysdig fd.name=/var/log/mysqld.log
 9  sysdig -cl
10  sysdig -i httplog
11  sysdig -i proc_exec_time
12  sysdig -i topprocs_cpu
13  sysdig -c topprocs_cpu
14  sysdig -c tracers_2_statsd
15  sysdig -c topfiles_bytes
16  sysdig -c topprocs_cpu
17  sysdig -c topprocs_cpu "fd.name contains sshd"
18  sysdig -c topprocs_cpu "proc.name contains sshd"
19  csysdig
20  sysdig -c topprocs_cpu
21  rpm --import https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public
22  curl -s -o /etc/yum.repos.d/draios.repo https://download.draios.com/stable/rpm/draios.repo
23  yum install -y epel-release
24  yum update
25  yum makecache
26  yum -y install kernel-devel-$(uname -r)
27  yum -y install sysdig
28  sysdig
29  yum install httpd mysql
30  service httpd start

一眼看去,全是命令,没有时间。若能在每条记录前加上时间戳,排查问题时就能一目了然。下面分别介绍三种配置方式,每种都很简单,但有一个注意事项:在格式字符串末尾,别忘了在单引号或双引号内加一个空格,否则输出会连在一起,难以阅读。

方法 1:临时设置(当前会话有效)

直接在终端执行 export 命令即可,效果持续到当前 shell 会话结束,关掉终端或重启后失效:

# export HISTTIMEFORMAT='%F %T '

方法 2:永久设置当前用户

将环境变量写入当前用户的 shell 配置文件,例如 .bashrc.bash_profile。执行以下任一命令:

# echo 'HISTTIMEFORMAT="%F %T "' >> ~/.bashrc

或者:

# echo 'HISTTIMEFORMAT="%F %T "' >> ~/.bash_profile

然后立即生效:

# source ~/.bashrc

或:

# source ~/.bash_profile

设置后,该用户每次登录时 history 都会自动显示时间。

方法 3:永久设置所有用户

如果你希望系统上所有用户都使用带时间的 history 输出,可以将变量写入全局配置文件 /etc/profile

# echo 'HISTTIMEFORMAT="%F %T "' >> /etc/profile

同样需要执行 source 使当前会话生效,或者等用户下次登录时自动加载:

# source /etc/profile

配置完成后,再次运行 history,输出将变成下面这样——每条命令都附带了执行时的精确日期和时间:

# history
 1  2017-08-16 15:30:15 yum install -y mysql-server mysql-client
 2  2017-08-16 15:30:15 service mysqld start
 3  2017-08-16 15:30:15 sysdig proc.name=sshd
 4  2017-08-16 15:30:15 sysdig -c topprocs_net
 5  2017-08-16 15:30:15 sysdig proc.name=sshd
 6  2017-08-16 15:30:15 sysdig proc.name=sshd | more
 7  2017-08-16 15:30:15 sysdig fd.name=/var/log/auth.log | more
 8  2017-08-16 15:30:15 sysdig fd.name=/var/log/mysqld.log
 9  2017-08-16 15:30:15 sysdig -cl
10  2017-08-16 15:30:15 sysdig -i httplog
11  2017-08-16 15:30:15 sysdig -i proc_exec_time
12  2017-08-16 15:30:15 sysdig -i topprocs_cpu
13  2017-08-16 15:30:15 sysdig -c topprocs_cpu
14  2017-08-16 15:30:15 sysdig -c tracers_2_statsd
15  2017-08-16 15:30:15 sysdig -c topfiles_bytes
16  2017-08-16 15:30:15 sysdig -c topprocs_cpu
17  2017-08-16 15:30:15 sysdig -c topprocs_cpu "fd.name contains sshd"
18  2017-08-16 15:30:15 sysdig -c topprocs_cpu "proc.name contains sshd"
19  2017-08-16 15:30:15 csysdig
20  2017-08-16 15:30:15 sysdig -c topprocs_cpu
21  2017-08-16 15:30:15 rpm --import https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public
22  2017-08-16 15:30:15 curl -s -o /etc/yum.repos.d/draios.repo https://download.draios.com/stable/rpm/draios.repo
23  2017-08-16 15:30:15 yum install -y epel-release
24  2017-08-16 15:30:15 yum update
25  2017-08-16 15:30:15 yum makecache
26  2017-08-16 15:30:15 yum -y install kernel-devel-$(uname -r)
27  2017-08-16 15:30:15 yum -y install sysdig
28  2017-08-16 15:30:15 sysdig
29  2017-08-16 15:30:15 yum install httpd mysql
30  2017-08-16 15:30:15 service httpd start

可以看到,每条命令都清晰记录了执行的精确时间。这个小技巧在日常运维和故障排查中非常实用——知道某条命令在何时执行,往往能帮你锁定问题发生的窗口。如果你之前只看命令内容,不妨现在就设置一下,让 history 的输出更完整、更可追溯。

来源:https://www.jb51.net/LINUXjishu/596592.html
上一篇CentOS 6.5安装配置TigerVNC服务教程 下一篇Windows输入法选字框消失的解决方法
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
微软详解Win11时间点还原 默认每24小时创建恢复点
系统平台 · 2026-06-30

微软详解Win11时间点还原 默认每24小时创建恢复点

微软今日推送了最新的 6 月可选更新,并发布博客详细解读了 Win11 全新的“时间点还原”(Point-in-time restore)功能——这一功能本质上是对系统恢复体验的一次全面升级,旨在让用户更轻松地应对电脑故障。 微软表示,面向 Windows 11 客户端用户的“时间点还原”功能现已正

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验
系统平台 · 2026-06-30

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验

微软今天推送了Windows 11 26H1设备的6月可选更新KB5095091,安装完成后系统版本号会升级到Build 28000 2340。值得一提的是,这次更新并非面向所有设备,而是专门为搭载高通骁龙X2系列芯片的机型准备的——包括骁龙X2 Plus、X2 Elite和X2 Elite Ext

Win11六月可选更新KB5095093修复回收站弹窗异常
系统平台 · 2026-06-30

Win11六月可选更新KB5095093修复回收站弹窗异常

微软已悄然推送Windows 11六月可选更新,编号KB5095093。本次更新覆盖两个版本:24H2用户安装后版本号升级至Build 26100 8737,而25H2用户则更新至Build 26200 8737。 本次更新并非仅是小修小补,而是带来了多项实质性新功能。下面我们就来详细解析这些更新内

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞
系统平台 · 2026-06-30

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞

科技媒体 Cult of Mac 昨日(6月23日)发布博文指出,苹果在 macOS 27 Beta 2 更新中悄然封堵了一个此前可用的后门——用户曾能通过一条终端命令绕过候补名单,直接启用新版 Siri AI,如今这一方法已失效。 简要回顾一下:在 macOS 27 Beta 1 阶段,只需在 M

微软加速Win11 25H2推送 覆盖所有符合条件家用PC
系统平台 · 2026-06-30

微软加速Win11 25H2推送 覆盖所有符合条件家用PC

近日(6月23日),科技媒体 Windows Latest 发布了一则值得关注的动态:微软已进一步扩大 Windows 11 25H2 的推送范围,所有满足硬件要求、且不受 IT 部门管理的家庭版和专业版设备,现在均可顺利接收本次更新。 此次升级有一个显著特点——采用“启用包”(eKB)方式进行推送