Bash显示history记录中命令执行时间的方法

发布时间:2019-11-28编辑:脚本学堂
本文介绍下,如何在bash中显示history记录中命令的执行时间,有需要的朋友,可以参考下。

操作步骤如下所示。
编辑/etc/bashrc文件(或者/etc/profile),加入如下几行:
 

HISTFILESIZE=2000
HISTSIZE=2000
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
export HISTTIMEFORMAT
 

#注意HISTTIMEFORMAT后面一个引号前有一个空格,如果没有这个空格,那么history输出的结果中,命令会紧挨着前面的时间,所以加入一个空格便于分隔。

改了默认的历史记录文件的行数,默认为1000行,立即命令的条数,默认也是1000,这里修改为2000,另外两条参数用语显示命令的执行时
间,HISTTIMEFORMAT的格式你可以自己定义,定义成你想要的格式。具体格式可以参照linuxjishu/14052.html target=_blank class=infotextkey>date命令。
例如:"%Y-%m-%d %H:%M:%S "格式按照我们中国人的时间格式,"%s " 按照unix时间戳的格式显示。
保存后退出,关闭当前shell,并重新登录。

此时,在~/.bash_history文件中,就有记录命令执行的时间了,用cat命令显示这个文件,但是却会看到这个时间不是年月日显示的,而是按照unix time来显示:
 

复制代码 代码示例:

[root@h31 ~]# history |tail
999 2009-09-30 09:50:32 vim /etc/profile
1000 2009-09-30 09:50:32 exit
1001 2009-09-30 09:48:39 export HISTSIZE
1002 2009-09-30 09:48:50 echo $HISTSIZE
1003 2009-09-30 09:48:57 echo $HISTFILESIZE
1004 2009-09-30 09:49:05 echo $HISTTIMEFORMAT
1005 2009-09-30 09:49:12 history
1006 2009-09-30 09:50:20 vim /etc/profile
1007 2009-09-30 09:50:31 exit
1008 2009-09-30 09:50:35 history |tail

[root@h31 ~]# cat .bash_history |tail
#1254275337
echo $HISTFILESIZE
#1254275345
echo $HISTTIMEFORMAT
#1254275352
history
#1254275420
vim /etc/profile
#1254275431
exit
 

这个时间叫做unix time,是从1970年1月1日临时起,到现在一共经过了多少秒,因为1969年是unix系统诞生,因此1970年1月1日被规定为unix系统诞生的时间的初始linux系统因为和unix系统的相似性,也完全采用这种方式来记录时间,为了按照人类的年月日方式来显示时间,执行history命令来查看,就可以了.这样即可查看到在什么时间执行了什么命令。

注意:
本方法只对bash-3.0以上版本有效。
执行rpm -q bash即可显示bash的版本。
对于常见的linux AS4、AS5,都是有效的。
在debian4.0 Release 3和centos5.2上都没有问题。

注意:判断linux是软重启还是硬重启,可以用如下的命令。
 

复制代码 代码示例:
[root@as5 ~]# last
root pts/0 172.16.1.100 Mon Feb 9 08:35 still logged in
reboot system boot 2.6.9-55.ELsmp Mon Feb 9 08:34 (00:06)
root pts/0 172.16.1.100 Mon Feb 9 08:31 - down (00:01)
 

后测试故意按电源按钮重启的结果:
 

复制代码 代码示例:
[root@as5 ~]# last
root pts/0 172.16.1.100 Mon Feb 9 08:47 still logged in
reboot system boot 2.6.9-55.ELsmp Mon Feb 9 08:46 (00:01)
root pts/0 172.16.1.100 Mon Feb 9 08:35 - crash (00:10)
reboot system boot 2.6.9-55.ELsmp Mon Feb 9 08:34 (00:13)
root pts/0 172.16.1.100 Mon Feb 9 08:31 - down (00:01)

从以上的结果,我们可以看到正常命令重启显示为down,而电源强制重启为crash。
然后,结合日志信息即可判断问题发生时的情况了。
也可以按照上述方法修改系统配置,让history记录具体的执行时间。

就介绍到这了,Linux中的history日志,记录了你操作的所有命令,通过以上的命令,可以知道其执行时间,真是不错哦。