zoukankan      html  css  js  c++  java
  • history命令的优化

    前言

    默认的history记录的信息有限,我们对这个进行一定的扩充

    我们看下大概哪几个需求

    • 记录用户登陆的ip
    • 记录用户的名称
    • 记录执行命令的时间

    具体实现

    我们看下应该怎么做这个,尽量在不改变用户的习惯的情况下,既保留了相关的信息,又能直接使用

    将历史命令缓冲区的命令写入到历史命令文件中

    PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
    

    指定history的命令的日期的显示

    export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]" 
    

    获取当前的终端的登陆的IP

    USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
    

    指定存储history的目录

    HISTDIR=/var/log/.hist
    

    如果没有获取到ip就用主机名代替

    if [ -z $USER_IP ]; then                                                      
      USER_IP=`hostname`                                                         
    fi     
    

    如果没有目录就创建目录

    if [ ! -d $HISTDIR ]; then                                                 
      mkdir -p $HISTDIR                                                        
      chmod 777 $HISTDIR                                                        
    fi    
    

    如果没有记录文件,就创建记录文件

    if [ ! -d $HISTDIR/${LOGNAME} ]; then                                        
      mkdir -p $HISTDIR/${LOGNAME}                                               
      chmod 300 $HISTDIR/${LOGNAME}                                              
    fi     
    

    创建4096条历史记录的命令

    export HISTSIZE=4096                                    
    

    最终修改

    #history                                                                      
    PROMPT_COMMAND="history -a; $PROMPT_COMMAND"                                 
    USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` 
    HISTDIR=/var/log/.hist                                                       
    if [ -z $USER_IP ]; then                                                     
      USER_IP=`hostname`                                                         
    fi                                                                           
    if [ ! -d $HISTDIR ]; then                                                   
      mkdir -p $HISTDIR                                                         
      chmod 777 $HISTDIR                                                         
    fi                                                                           
    if [ ! -d $HISTDIR/${LOGNAME} ]; then                                        
      mkdir -p $HISTDIR/${LOGNAME}                                                
      chmod 300 $HISTDIR/${LOGNAME}                                              
    fi                                                                          
    export HISTSIZE=4096                                                         
    export HISTFILE="$HISTDIR/${LOGNAME}/history"                    
    export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S] [$USER_IP] [${LOGNAME}] "
    chmod 600 $HISTDIR/${LOGNAME}/history 2>/dev/null                            
    

    更新历史

    why when
    创建 2019年09月01日
    更新 2019年12月9日
  • 相关阅读:
    【todo】深入理解设计模式
    一个最简单的LRUCache实现 (JAVA)
    Redis之AOF重写及其实现原理
    【todo】nosql 的几种类型研究
    【todo】redis 中的hyperloglog原理
    【todo】ER分片
    【todo】研究一下mycat的原理
    【todo】研究一下sharding-jdbc的原理
    为什么存储过程比sql语句效率高?
    存储过程这一篇就够了
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575459.html
Copyright © 2011-2022 走看看