对于一个新项目,我们正在设置一个将运行多个进程的 Linux 机器。为了更好地回溯或回滚配置,我们希望保留在终端上输入的所有命令的持久历史记录并通过 ssh以及将所有输出保存到 stdout/err 到日志文件。
如果我们使历史持久化,我们可以得到如下结果:
1 history
2 ls
3 ps
4 ll
5 echo "hi"
6 history
并将相应的输出保存到名为1.log
、2.log
等的日志文件中。显然输出不仅应该在日志文件中,还应该显示出来。
以编程方式可视化我希望输入的每个命令都自动执行如下操作:
command > /log/$(len(history)).txt 2&>; echo /log/$(len(history-1)).txt
但在某种程度上我仍然可以实时看到发生的事情并与 CLI 等进行交互。
有什么方法可以像这样配置 bash,或者有任何其他方法可以在 Linux 中获得这种行为,以实现 SSH 会话和本地工作?
答案1
答案2
您可能需要研究一下auditd
,这是一个专门设计用于执行此操作的守护进程。
或者,正如您所发现的,您可以使用 bash 历史记录,并增加HISTSIZE
/HISTFILESIZE
变量以使其保留每个命令。
編輯:参见https://serverfault.com/questions/470755/log-all-commands-run-by-admins-on-production-servers