Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

AIX5.3 在history中记录命令执行的时间

Posted on 2010-02-04 14:26 Prayer 阅读(3198) 评论(0)  编辑 收藏 引用 所属分类: ShellLINUX/UNIX/AIX

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


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理