linux history使用小结

在服务器运维的时候,通常一个很重要的步骤的是需要记录history,因为一旦服务器发生异常的时候,可以通过history查看是不是误操作,或者其他原因。

history记录了在一段时间内终端输入的命令,该命令是linux默认安装的程序,形如:

tangs@ubuntu:~$ history
    1  ls -all
    2  history
    3  vim ~/.bash_logout
    4  ls
    5  history
tangs@ubuntu:~$

history会在用户退出时才将操作历史写入 ~/.bash_history,所以原数据可以在文件中查看,如果需要立马写入可以执行

history -w

保存历史记录文件是可以通过HISTFILE指定的,可以在 ~/.bashrc中指定,执行如下命令可以指定文件保存路径

echo HISTFILE=/path/your_path >> ~/.bashrc && source ~/.bashrc

同时,history提供一个HISTSIZE的变量,用于history历史记录长度的指定,ubuntu 16.4TLS默认长度为1000,其他linux like版本可能也是1000吧,可以利用如下查看:

tangs@ubuntu:~$ echo $HISTSIZE
1000
tangs@ubuntu:~$

同理,也可以修改HISTSIZE的大小来改变历史记录的长度。

history还提供了一个HISTTIMEFORMAT的变量,该变量指定了一个时间格式,也可以认为每条命令记录了执行的时间,同时还可以利用这个这边添加前缀信息,比如执行该条命令的用户名,比如可以在~/.bashrc中添加:

HISTTIMEFORMAT="$USER %F %T : "

结果就形如

    1  tangs 2019-02-11 03:39:21 : ls -all
    2  tangs 2019-02-11 03:39:21 : history
    3  tangs 2019-02-11 03:39:21 : vim ~/.bash_logout
    4  tangs 2019-02-11 03:39:21 : ls
    5  tangs 2019-02-11 03:39:21 : history
    6  tangs 2019-02-11 03:39:21 : vim ~/.bashrc
    7  tangs 2019-02-11 03:39:21 : source ~/.bashrc
    8  tangs 2019-02-11 03:39:21 : history
    9  tangs 2019-02-11 03:39:24 : ls

这样就记录了每条命令的时间,同时也利用时间格式,添加了$USER 获得用户名当着前缀。这样做的目的是,当我们要查看所有用户操作历史时,可以遍历每个用户下的操作记录,合并写入一个文件,这时候通过前缀,时间,就可以很清晰的还原操作历史。如果有必要还可以通过时间,对所有用户的操作记录排序,还原一段时间内的真实操作记录。

如果服务器有多个用户,每个用户都配置一遍时间,长度等很麻烦,可以直接在/etc/profile中配置,这样每个用户登录到bash时,都可以得到以上的配置。

发布了21 篇原创文章 · 获赞 15 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Tangs_/article/details/87014220