Chinaunix首页 | 论坛 | 博客
  • 博客访问: 396596
  • 博文数量: 36
  • 博客积分: 1998
  • 博客等级: 上尉
  • 技术积分: 486
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-23 13:48
文章分类

全部博文(36)

文章存档

2012年(11)

2011年(13)

2010年(12)

分类: 系统运维

2010-02-01 16:17:04

AIX下的ksh缺省会将所有执行的命令历史记录在/.sh_history文件中,但是一直以来,该文件中只记录命令本身而不记录命令执行的时间。
在 AIX5.3 中支持在 .sh_history 中记录时间,具体实现方式如下:

1. 需要在环境变量中增加一个变量:EXTENDED_HISTORY=ON (注意,一定是大写ON,小写无效)

2. 此时 view .sh_history 文件可以发现记录的命令是如下格式,其中被 #? 括起来的部分就是命令执行的时间戳,该数值是从1970年到当时的秒数。
    env | grep HIS #?1184585109#?
    ls #?1184585111#?
    fc -t #?1184585117#?
    vi /.sh_history #?1184585179#?

3. 为了换算成我们可以阅读的时间,可以使用 perl 命令 perl -e 'print scalar localtime 1184585179'。当然更直接和简单的方法是使用 fc -t 命令来显示命令历史,其输出如下:
    1192    2007/07/16 12:25:09 :: env | grep HIS
    1193    2007/07/16 12:25:11 :: ls
    1194    2007/07/16 12:25:17 :: fc -t
    1197    2007/07/16 12:26:19 :: vi /.sh_history

4. 如果要对所有用户记录命令时间,建议更改 /etc/profile 文件,增加如下两行:
    export EXTENDED_HISTORY=ON
    export HISTSIZE=512   (另一个关于命令历史的环境变量,用于定义最多保存的命令条数,可根据需要修改)

   增加后用户重新登录后即生效,不需要重启

另外,转一个beginner的帖子,也是关于用户执行命令的具体时间这个问题的探讨
http://www.cublog.cn/u/739/showart.php?id=436897
阅读(4636) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~