如何记录终端会话中的所有输入和输出?

如何记录终端会话中的所有输入和输出?

我如何记录通过终端完成的所有工作?例如,我想要记录通过终端在数据库上完成的所有工作。

答案1

当您准备开始记录日志文件时,请输入:

script screen.log

现在,直到您停止脚本为止,终端中的所有输入和输出都将存储在 screen.log 中。完成后,只需输入:

exit

您的 screen.log 文件将存储在本地目录中。如果您想要重定向它,请使用绝对路径名,例如~/screen.log。这将完全满足您的要求。

来源: Ubuntu 指南 - 如何记录终端命令

答案2

你可能想尝试一下海胆属。除了录制之外,您还可以共享它并将播放器嵌入到您的博客、文章或会议谈话中。

答案3

我有一个更好的方法,使用 syslog 来记录每个 shell 命令,这可能因 Linux 发行版而异,但方法保持不变

您需要遵循一些步骤:

步骤#1(创建 Syslog 服务)

# vim /etc/rsyslog.d/bash.conf

local6.*    /var/log/commands.log

步骤#2(打开 bashrc 并输入以下命令)

# vim /root/.bashrc

# Enable CLI Logging by Mansur 08-12-2016 
whoami="$(whoami)@$(echo $SSH_CONNECTION | awk '{print $1}')"export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$whoami [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

步骤 # 3(重新启动 Syslog 服务)

# /etc/init.d/rsyslog

以下是一个日志示例:

12月7日 22:13:00 validationdb2 mahasan:root@export [13291]:tail -f /var/log/mysql/mysql.log [0]
12 月 7 日 22:13:09 validationdb2 mahasan:root@export [13291]:ls -lh [0]
12 月 7 日 22:13:27 validationdb2 mahasan:root@export [13291]:touch 测试命令 [0]

答案4

健保完美解决您的问题。此工具会自动捕获有关每个执行命令(及其输出)的所有潜在有用信息。

通过使用 提供的高级查询机制,您nhi可以轻松检索整个 shell 会话(或终端输出)或仅检索您感兴趣的命令nhi

笔记:

我是这个工具的创建者。如果您有任何问题,请随时提问。

相关内容