持久命令历史记录?

持久命令历史记录?

有没有办法保留命令历史记录并按命令对其进行搜索或分组?

换句话说,我想列出过去 3 个月内我执行过的每个 grep 命令。这种能力是否可能以某种方式实现?

答案1

假设您使用的是最常见的 shell bash

history

将显示存储在 .bash_history 文件中的历史记录。您可以通过添加来增加历史记录的大小并添加日期

HISTSIZE=1000
HISTTIMEFORMAT="%Y/%m/%d %T "

到您的 .bashrc 文件。然后你可以

history | grep " 2019/0[1-3]"

请注意,bash 仅保留交互式会话中所选命令的历史记录。如果您想跟踪所有内容,建议使用自定义 shell 包装器、远程日志记录和整个系统的版本控制。

答案2

为了完成每个命令,我不会依赖 bash 历史记录,原因有几个。您可以将此类命令发送到系统日志服务/守护程序。

我曾经在安全的中央系统日志服务器中积压了 200 多台 Debian 服务器中执行的 1 年多的命令日志。

/etc/bash.bashrc我使用了一个简单的“技巧”来为所有用户添加或添加。 bash_profile 仅适用于您的用户以下行:

readonly PROMPT_COMMAND='history -a >(logger -t "cmdline $USER[$PWD] $SSH_TTY $SSH_CONNECTION")'

参见相关将 BASHPID 添加到历史记录中?

相关内容