来源:http://www.aixchina.net/Article/27258

字数 1056阅读 4365评论 1赞 0

内容提要:

.sh_history是在ksh中用于存储用户在shell中输入的命令历史的文件。它的大小是否有限制?AIX又是如何管理它的?下面我们将从几个方面来讲述该文件的管理机制。

说明

1. .sh_history文件的大小是否有限制?
.sh_history文件本身并没有大小的限制,它的大小由用户或系统的限制所限制。但是,我们可以通过环境变量HISTSIZE来限制该文件的大小。注意,HISTSIZE指的是该文件中存储的命令的行数,它的默认值是128,最大值是28671(最大短变量值-4k,即32767-4096)。当HISTSIZE没有设置时,默认.sh_history会为non-root用户保留128行命令,为root用户保留512行命令。
我们可以通过下面一段命令来验证:

#cat .sh_history |wc -l
1023
#history |wc -l
16
#history -2500|wc -l
512
#export HISTSIZE=2500
#history -2500|wc -l
1024

2. 如果.sh_history文件达到了它的大小限制,此时再有新的命令进入,该文件如何处理?
当.sh_history文件达到了它的大小限制,此时又有新的命令进入时,.sh_history文件会继续保存该命令。注意,.sh_history可以保存比HISTSIZE多得多的历史命令,直到达到用户或系统的限制;但是,内存内(in-memory)的历史列表最多只能保存HISTSIZE个历史命令,并且它像FIFO一样操作。即当新的命令进入时,第一条命令从列表中挤出,但是该命令并不会从.sh_history文件中删除。.sh_history文件仅会在某些情况下剪裁至HISTSIZE设置的大小,详情参看问题3。

3. .sh_history文件在什么条件下会进行裁减?如何裁减?
当下面三个条件同时满足时,.sh_history文件会裁减到HISTSIZE设置的大小。该裁减发生在初始登录的时刻。
(a)该文件在最近的600秒中没有被访问;
(b)在.sh_history文件中存储的命令行数大于HISTSIZE或28671,二者取最大。如果HISTSIZE超过28671,限制取作28671。如果没有设置HISTSIZE,该限制默认是128行。
(c).sh_history的大小超过(IOBSIZE * sizeof(int))。其中,IOBSIZE定义为1024并且是shell内部的值。

.sh_history文件的管理机制的更多相关文章

  1. Linux 内核的文件 Cache 管理机制介绍

    Linux 内核的文件 Cache 管理机制介绍 http://www.ibm.com/developerworks/cn/linux/l-cache/ 1 前言 自从诞生以来,Linux 就被不断完 ...

  2. Linux 内核的文件 Cache 管理机制介绍-ibm

    https://www.ibm.com/developerworks/cn/linux/l-cache/ 1 前言 自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使 ...

  3. 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件

    本文背景: 在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用:根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制. 本 ...

  4. hdfs文件上传机制与namenode元数据管理机制

    1.hdfs文件上传机制 文件上传过程:   1.客户端想NameNode申请上传文件, 2.NameNode返回此次上传的分配DataNode情况给客户端 3.客户端开始依向dataName上传对应 ...

  5. 浅谈Linux内存管理机制

    经常遇到一些刚接触Linux的新手会问内存占用怎么那么多?在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是Linux内存管理的一个优秀特性,在这 ...

  6. 深入了解C#系列:谈谈C#中垃圾回收与内存管理机制

    今天抽空来讨论一下.Net的垃圾回收与内存管理机制,也算是完成上个<WCF分布式开发必备知识>系列后的一次休息吧.以前被别人面试的时候问过我GC工作原理的问题,我现在面试新人的时候偶尔也会 ...

  7. IOS- 内存管理机制

    iOS平台内存常见问题 作为iOS平台的开发者,是否曾经为内存问题而苦恼过?内存莫名的持续增长,程序莫名的crash,难以发现 的内存泄漏,这些都是iOS平台内存相关的常见问题:本文将会详细介绍iOS ...

  8. Tomcat的Session管理机制

    >>Session和Cookie请求的过程 Http连接本身是无状态的,即前一次发起的连接跟后一次没有任何关系,是属于两次独立的连接请求,但是互联网访问基本上都是需要有状态的,即服务器需要 ...

  9. Android内存进程管理机制

    参考文章: http://www.apkbus.com/android-104940-1-1.htmlhttp://blog.sina.com.cn/s/blog_3e3fcadd0100yjo2.h ...

随机推荐

  1. 【转】oracle定制定时执行任务

    本节摘要:本节介绍使用oracle自带的job来实现oracle定制定时执行任务. 1.引言 定制定时执行的任务有两种形式,系统级别和数据库级别, 从操作系统级别来讲, windows系统我们可以使用 ...

  2. 代码参考: css3动画—— 星系轨道

    CSS3橙色的星球绕轨道公转动画 http://hovertree.com/texiao/css3/24/ 例子 http://hovertree.com/h/bjaf/css3xingxi.htm ...

  3. NRF51822之RNG

    在裸机下官方已经提供另一个RNG的例子(RF51_SDK_10.0.0_dc26b5e\examples\peripheral\rng) 好了现在我将给出在蓝牙模式下如何使用例子 #include & ...

  4. springboot与mybatis相结合

    1.异常 发生受察时异常提交请求发生运行时异常 回滚 2.yml配置 server: port: 8888 # 配置mybatis mybatis: mapper-locations: classpa ...

  5. 深度学习原理与框架-Tensorflow基本操作-变量常用操作 1.tf.random_normal(生成正态分布随机数) 2.tf.random_shuffle(进行洗牌操作) 3. tf.assign(赋值操作) 4.tf.convert_to_tensor(转换为tensor类型) 5.tf.add(相加操作) tf.divide(相乘操作) 6.tf.placeholder(输入数据占位

    1. 使用tf.random_normal([2, 3], mean=-1, stddev=4) 创建一个正态分布的随机数 参数说明:[2, 3]表示随机数的维度,mean表示平均值,stddev表示 ...

  6. jsfl 生成flash 工具面板

    利用flash组件的List做界面,先从flash中拖出List组件,然后删除.绑定Main类. package { import flash.display.Sprite; import flash ...

  7. js event

    event jquery获取: 在jquery中调用函数中最多只能有event这一个参数,所有的值在event.data中可以获取. $('select').click(function(event) ...

  8. 批量杀死多个进程 linux kill

    批量杀进程 -| “grep -v grep”是在列出的进程中去除含有关键字“grep”的进程. “cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID,也有使用aw ...

  9. vue:绑定数据的vue页面加载会闪烁问题

    1:在挂在数据的容器加上属性 v-cloak 2:在css中添加如下代码 但有时候还是会不起作用,可能原因有两个 2.1:display属性被更高权限的display属性覆盖了,我们增加权限就好了 2 ...

  10. NetStream 记录

    bufferLength : Number [只读] 数据当前存在于缓冲区中的秒数.(已进入缓冲区的秒数) bufferTime : Number 指定在开始显示流之前需要多长时间将消息存入缓冲区.( ...