linux history info setting

linux历史信息设置

  1. history命令使用

    1
    2
    3
    4
    5
    6
    history      //显示所有历史信息
    history 10 //显示最新10条信息
    !{num} //执行历史信息中的第几条命令
    !! //重复执行上一条命令
    !rpm //执行最后一次以rpm开头的命令
    history -c //清空历史消息
  2. 修改history配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    export HISTTIMEFORMAT='%F %T'    //显示执行命令时间

    export HISTSIZE=450 //设置历史记录保留条数(控制台输出)
    export HISTFILESIZE=450 //设置历史记录保留条数(文件保存)
    export HISTFILE=~/.bash_history //设置历史记录保存位置

    export HISTCONTROL=ignoredups //剔除连续的重复条目
    export HISTCONTROL=erasedups //剔除整个命令历史中的重复条目
    export HISTCONTROL=ignorespace //强制history不记住特定的命令,在不想被记住的命令前面输入一个空格

    export HISTSIZE=0 //禁用 history

    export HISTIGNORE="pwd:ls:ls -ltr:" //忽略pwd,ls,ls -ltr等命令
  3. 详细history信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    [root@dev ~]# cat > /etc/profile.d/history.sh <<EOF
    #!/bin/bash
    HISDIR="/tmp/history"
    if [ ! -d $HISDIR ];then
    mkdir -p $HISDIR && chmod 777 $HISDIR
    fi

    LOGTM_1=$(date +"%Y%m%d")
    LOGTM_2=$(date +"%Y%m%d" -d '30 days ago')
    LOGTM_3=$(date +"%H%M%S")
    if [ ! -d $HISDIR/$LOGTM_1 ];then
    mkdir -p $HISDIR/$LOGTM_1 && chmod 777 $HISDIR/$LOGTM_1
    fi
    if [ -d $HISDIR/$LOGTM_2 ];then
    rm -rf $HISDIR/$LOGTM_2
    fi

    LOGUSER=$(who -u am i 2>/dev/null| awk '{print $1}')
    LOGIPAR=$(who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g')
    [ ! $LOGUSER ] && LOGUSER=$(whoami)
    [ ! $LOGIPAR ] && LOGIPAR=$(hostname)

    export HISTTIMEFORMAT="[%F %T][$LOGUSER][$LOGIPAR] "
    export HISTSIZE=100000
    export HISTFILE="$HISDIR/$LOGTM_1/$LOGTM_3-$LOGUSER-$LOGIPAR"
    EOF
    [root@dev ~]# source /etc/profile
  4. 通过history保留用户操作信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    [root@dev ~]# vim /etc/profile.d/history.users.sh
    #PS1="`whoami`@`hostname`:"'[$PWD]' //线上使用的话,建议去掉这一行。即采用默认的终端显示方式。
    history
    USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
    if [ "$USER_IP" = "" ];then
    USER_IP=`hostname`
    fi
    if [ ! -d /tmp/history ];then
    mkdir /tmp/history
    chmod 777 /tmp/history
    fi
    if [ ! -d /tmp/history/${LOGNAME} ];then
    mkdir /tmp/history/${LOGNAME}
    chmod 300 /tmp/history/${LOGNAME}
    fi
    export HISTSIZE=10000
    DT=`date +"%Y%m%d_%H%M%S"`
    export HISTFILE="/tmp/history/${LOGNAME}/${USER_IP}.history.$DT"
    chmod 600 /tmp/history/${LOGNAME}/*history* 2>/dev/null
    [root@dev ~]# source /etc/profile