有没有一种优雅的方法来记录机器上所有 shell 中提交的每个命令?这是在一个不常使用的 Ubuntu 服务器的环境中,我是其中唯一的人类用户。(自动化系统使用多个用户帐户。)
我希望这是不引人注目的和低开销的,所以如果有一个简单的方法涉及类似的东西我会很高兴script
。
答案1
自从时间诞生以来(实际上可以追溯到人们必须为他们使用的每个计算机周期支付真金白银的时代),Unix 及其克隆版本就已经acct
内置了一个名为进程记账()的系统。这使得系统管理员能够确切地知道用户在做什么,从而可以向他们收取相应的费用。
acct
至今,这些功能仍然存在于大多数 Unix 和 Linux 系统中。
本站:http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html告诉您如何启用它。
答案2
答案3
这是一个非常好的和快速的记录所有 shell 命令的方法:
步骤1:
使用您最喜欢的文本编辑器打开 /etc/bashrc 并在末尾添加以下行:
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
第2步:
通过在 /etc/syslog.conf 文件中添加以下行,将 syslogger 设置为将 local6 捕获到日志文件:
local6.* /var/log/cmdlog.log
答案4
您可以使用苏多什作为 shell 包装器。它包括自动记录您所做的一切,并可以回放日志文件。请参阅其网站了解更多信息。