令人琢磨的 history 命令

大家知道 history命令可以列出最近执行过的命令,而且我们也知道,最近执行过的命令是存放在用户目录下的.bash_history 文件中的;但是有一点令人迷惑,我同时以同一个用户身份打开两个终端,交替在两个终端中执行命令,这时,我们分别在每个终端中使用history命令,显示的都是当前终端里刚执行过的命令,而不是两个终端执行的命令的交叉显示,我们说,执行过的命令是存入文件的,而打开文件,发现里面没有我们刚执行过的命令,这时我们不得不怀疑,刚才执行过的命令并没有立即写history文件,肯定是先缓存起来了,那么什么时候才写文件呢?目前我只知道当exit的时候是要写文件的,其它的时候,如果执行的命令足够多了,会写文件吗?这个还不清楚。

我起初是考虑使用strace 看看history是怎么执行的,但是计算机死活说history不是命令,type history 看看,原来history是内置命令,不是文件,所以strace就不管了,由此也知道了,strace 不能跟踪内置命令,因为strace可以跟踪一个进程(使用进程的pid),如果内置命令也是要产生进程的话,肯定是可以跟踪的,猜想内置命令执行时并不产生一个进程

注意:默认history命令列出很多曾经执行的命令,如果只要后n条,可以history n

 

strace 也能用,直接strace bash进程就行了

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据