中国青基会

查看完整版本: 在命令 history 中显示时间戳

cckj 2008-10-19 22:58

在命令 history 中显示时间戳

转自: [url=http://linux.byexamples.com/archives/467/list-command-line-history-with-timestamp/]http://linux.byexamples.com/arch ... ory-with-timestamp/[/url]

history 是一条非常实用的 shell 命令,可以显示出之前在 shell 中运行的命令,配合 last 显示之前登录的用户,就可以追溯是哪个用户执行了某些命令。
last
...
mysurface    tty7         :[color=#cc66cc]0[/color]               Mon Oct  [color=#cc66cc]6[/color] [color=#cc66cc]20[/color]:[color=#cc66cc]07[/color] - down   [color=#66cc66]([/color][color=#cc66cc]00[/color]:[color=#cc66cc]00[/color][color=#66cc66])[/color]
reboot   system boot  [color=#cc66cc]2.6[/color][color=#cc66cc].24[/color][color=#cc66cc].4[/color][color=#cc66cc]-64[/color].fc8  Mon Oct  [color=#cc66cc]6[/color] [color=#cc66cc]20[/color]:[color=#cc66cc]06[/color]          [color=#66cc66]([/color][color=#cc66cc]00[/color]:[color=#cc66cc]00[/color][color=#66cc66])[/color]
mysurface    pts/[color=#cc66cc]8[/color]        [color=#cc66cc]10.168[/color][color=#cc66cc].28[/color][color=#cc66cc].44[/color]     Mon Oct  [color=#cc66cc]6[/color] [color=#cc66cc]17[/color]:[color=#cc66cc]42[/color] - down   [color=#66cc66]([/color][color=#cc66cc]01[/color]:[color=#cc66cc]58[/color][color=#66cc66])[/color]
mysurface    pts/[color=#cc66cc]7[/color]        :[color=#cc66cc]0.0[/color]             Mon Oct  [color=#cc66cc]6[/color] [color=#cc66cc]17[/color]:[color=#cc66cc]41[/color] - [color=#cc66cc]19[/color]:[color=#cc66cc]40[/color]  [color=#66cc66]([/color][color=#cc66cc]01[/color]:[color=#cc66cc]59[/color][color=#66cc66])[/color]
mysurface    pts/[color=#cc66cc]6[/color]        :[color=#cc66cc]0.0[/color]             Mon Oct  [color=#cc66cc]6[/color] [color=#cc66cc]17[/color]:[color=#cc66cc]27[/color] - [color=#cc66cc]19[/color]:[color=#cc66cc]40[/color]  [color=#66cc66]([/color][color=#cc66cc]02[/color]:[color=#cc66cc]13[/color][color=#66cc66])[/color]
mysurface    pts/[color=#cc66cc]5[/color]        :[color=#cc66cc]0.0[/color]             Mon Oct  [color=#cc66cc]6[/color] [color=#cc66cc]17[/color]:[color=#cc66cc]27[/color] - [color=#cc66cc]19[/color]:[color=#cc66cc]40[/color]  [color=#66cc66]([/color][color=#cc66cc]02[/color]:[color=#cc66cc]13[/color][color=#66cc66])[/color]
mysurface    pts/[color=#cc66cc]5[/color]        :[color=#cc66cc]0.0[/color]             Mon Oct  [color=#cc66cc]6[/color] [color=#cc66cc]15[/color]:[color=#cc66cc]52[/color] - [color=#cc66cc]15[/color]:[color=#cc66cc]59[/color]  [color=#66cc66]([/color][color=#cc66cc]00[/color]:[color=#cc66cc]07[/color][color=#66cc66])[/color]
...

不过默认下,history 并不记录命令的执行时间,分析起来很困难。这时候可以配置
[b]HISTTIMEFORMAT[/b] 环境变量,给 history 记录添加上时间戳:
[code]export HISTTIMEFORMAT="%F %T "[/code]
...
  [color=#cc66cc]994[/color]  [color=#cc66cc]2008[/color][color=#cc66cc]-10[/color][color=#cc66cc]-16[/color] [color=#cc66cc]02[/color]:[color=#cc66cc]27[/color]:[color=#cc66cc]40[/color] [color=#006600]exit[/color]
  [color=#cc66cc]995[/color]  [color=#cc66cc]2008[/color][color=#cc66cc]-10[/color][color=#cc66cc]-16[/color] [color=#cc66cc]01[/color]:[color=#cc66cc]12[/color]:[color=#cc66cc]20[/color] iptables -nL
  [color=#cc66cc]996[/color]  [color=#cc66cc]2008[/color][color=#cc66cc]-10[/color][color=#cc66cc]-16[/color] [color=#cc66cc]01[/color]:[color=#cc66cc]47[/color]:[color=#cc66cc]46[/color] vi .bash_profile
  [color=#cc66cc]997[/color]  [color=#cc66cc]2008[/color][color=#cc66cc]-10[/color][color=#cc66cc]-16[/color] [color=#cc66cc]01[/color]:[color=#cc66cc]47[/color]:[color=#cc66cc]55[/color] [color=#006600]history[/color]
  [color=#cc66cc]998[/color]  [color=#cc66cc]2008[/color][color=#cc66cc]-10[/color][color=#cc66cc]-16[/color] [color=#cc66cc]01[/color]:[color=#cc66cc]48[/color]:[color=#cc66cc]03[/color] . .bash_profile
  [color=#cc66cc]999[/color]  [color=#cc66cc]2008[/color][color=#cc66cc]-10[/color][color=#cc66cc]-16[/color] [color=#cc66cc]01[/color]:[color=#cc66cc]48[/color]:[color=#cc66cc]04[/color] [color=#006600]history[/color]
[color=#cc66cc]1000[/color]  [color=#cc66cc]2008[/color][color=#cc66cc]-10[/color][color=#cc66cc]-16[/color] [color=#cc66cc]01[/color]:[color=#cc66cc]48[/color]:[color=#cc66cc]09[/color] [color=#006600]exit[/color]
[color=#cc66cc]1001[/color]  [color=#cc66cc]2008[/color][color=#cc66cc]-10[/color][color=#cc66cc]-16[/color] [color=#cc66cc]02[/color]:[color=#cc66cc]27[/color]:[color=#cc66cc]43[/color] [color=#006600]history[/color]
...

把上面的 export 命令加入到  ~/.bashrc 或者 ~/.bash_profile  中即可在登录后自动开启 history 时间戳了~
其实 HISTTIMEFORMAT 的格式就是 strftime 函数的格式,比如上面的  "%F %T",%F 表示显示出  Y-M-D 格式的日期,%T 表示显示出  H-M-S 这样格式的时间。更多的格式,可以参考 [b]man strftime[/b]。
页: [1]
查看完整版本: 在命令 history 中显示时间戳
Baidu