linux系统history记录不全的原因

摘要:
问题场景那么问题来了,假若之前history命令记录为c0,用户先打开了shell终端a,执行了一部分命令c1,又打开了一个shell终端b,又执行了一部分命令c2.问题1.终端a执行的这部分命令终端b上看不到。问题2.终端a正常退出,相关命令会写入到~/.bash_history文件中,等到终端b正常退出后,相关命令也会写入到~/.bash_history文件中,注意这个时候终端b写入的内容为c0+c2,也即c1记录会丢失!!!

参考:

https://blog.csdn.net/imliuqun123/article/details/82978379

基本认识

linux默认配置是当打开一个shell终端后,执行的所有命令均不会写入到~/.bash_history文件中,只有当前用户退出后才会写入,这期间发生的所有命令其它终端是感知不到的。

问题场景

那么问题来了,假若之前history命令记录为c0,用户先打开了shell终端a,执行了一部分命令c1,又打开了一个shell终端b,又执行了一部分命令c2.
问题1.终端a执行的这部分命令终端b上看不到。
问题2.终端a正常退出,相关命令会写入到~/.bash_history文件中(c1命令也会写入,即c0+c1),等到终端b正常退出后,相关命令也会写入到~/.bash_history文件中,注意这个时候终端b写入的内容为c0+c2,也即c1记录会丢失!!!

解决方案

将下面这段内容添加到~/.bashrc 并执行 . ~/.bashrc即可

  1. # format history
  2. # save in ~/.bashrc
  3. USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
  4. export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S `whoami`@${USER_IP}: "
  5. export HISTFILESIZE=1000000
  6. export PROMPT_COMMAND="history -a; history -r; $PROMPT_COMMAND"
  7. shopt -s histappend
  8. #bind '"e[A": history-search-backward'
  9. #bind '"e[B": history-search-forward'

第一行是获取USER_IP也就是会话的ip

第二行是设置history的时间格式,这里设置的格式为:history序号2018-09-29 19:33:59 root@192.168.25.1: history

第三行设置的是history可以存放的历史命令最多可以存放1000000行

第四行 history -a 追加本次会话新执行的命令到.bash_history中也就是内存中的命令写入到历史文件中,history -r 读取历史文件中的所有历史命令到内存中的历史列表,即使内存中的列表中已经存在这条历史

第五行 打开histappend选项,将其修改为on 意为,推出这个回话后,回想shell中发送一个sighup的信号,告诉他我退出了

免责声明:文章转载自《linux系统history记录不全的原因》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇一些I2S的基础概念配置管理工具比較下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux添加/删除用户和用户组

1、建用户:adduser phpq                             //新建phpq用户passwd phpq                               //给phpq用户设置密码 2、建工作组groupadd test                          //新建test工作组 3、新建用户同时增...

Linux C/C++编程之(十七)进程间通信

文章目录 一、概述 二、进程间通信概念及方法 1. 管道的概念 2. pipe 3. 管道的读写行为 4. 管道缓冲区大小 5. 管道优劣 6. FIFO 7. 共享存储映射 8. mmap函数 9. munmap函数 10. mmap九问 11. mmap父子进程间通信 12. 匿名映射 13. mmap无血缘关系进程间通信 3. 练习...

linux 安装nginx

1、检查服务器上是否已安装nginx:nginx -v 2、查看编译参数:nginx -v 3、 查看安装目录:rpm -ql nginx 4、查看配置文件:/etc/logrotate.d/nginx 5、在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel。   5.1、rpm包安装的...

Linux 通过安装vncserver,客户端远程连接展示图形化界面

Step 1: 安装vncserver和其依赖的软件 # 修改yum为国内镜像 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup-linux && wget -O /etc/yum.repos.d/CentOS-Base.repo h...

Linux 解压报错

在Ubuntu上安装JDK时在解压过程中,总是遇到错误。 首先wget命令下载文件: $wget -c http://download.oracle.com/otn-pub/java/jdk/8u40-b26/jdk-8u40-linux-x64.tar.gz 提示下载成功后,下一步解压缩; 解压缩: $tar -zxvf jdk-8u40-linux-x...

linux 下常用查看Apache状态语句

收集linux下查看常用apache状态语句:1、查看Apache的并发请求数及其TCP连接状态:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'返回结果一般如下:SYN_RECV 28CLOSE_WAIT 1TIME_WAIT 9ESTABLISHED 4LAST_A...