我一直在寻找一种方法来记录有关命令历史的一些更详细的信息。我的主要目的是粗略记录发出的命令,以便在调试我们的应用程序问题时构建粗略的服务器时间表。 它不是用于非常详细的审计目的。 我遇到了这篇文章,它提出了一种很好的修改方法,以使用有关每个命令的附加信息PROMPT_COMMAND
来扩充日志。history
它建议将以下内容添加到~/.bashrc
文件中:
export PROMPT_COMMAND='hpwd=$(history 1); hpwd="${hpwd# *[0-9]* }"; if [[ ${hpwd%% *} == "cd" ]]; then cwd=$OLDPWD; else cwd=$PWD; fi; hpwd="${hpwd% ### *} ### $cwd"; history -s "$hpwd"'
这很棒,除了它只在PS1
发出提示时发生。有没有办法增强它以使用非交互式外壳(我认为这是正确的术语)?
例如,我想:
ssh host "ls | grep home"
要为ls | grep home
on创建一个条目host
,但由于这不是通过PS1
提示完成的,因此链接的解决方案不足。
我调查auditd
了一下。这是一个很棒的实用程序,但详细程度超出了我的需要。我本可以很容易地解析日志,但是管道、重定向、循环变成了一场噩梦,无法理智地重建成与history
已经报告的内容非常相似的东西。