Posted on 2010-02-04 14:26
Prayer 阅读(3259)
评论(0) 编辑 收藏 引用 所属分类:
Shell 、
LINUX/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