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

Ank*_*kit 53 command-line tty log

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

xlu*_*asx 81

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

script screen.log
Run Code Online (Sandbox Code Playgroud)

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

exit
Run Code Online (Sandbox Code Playgroud)

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

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

  • 它应该与控制台中运行的所有内容一起使用,从“标准输入”(通常是您的键盘)读取并写入标准输出(通常是您的终端窗口)。所以它应该包括mysql命令行客户端。手册页(`man script`)甚至提到了`vi`(编辑器)...... (2认同)

sic*_*ill 12

你可能想试试Asciinema。除了制作录音之外,您还可以分享它并将播放器嵌入到您的博客、文章或会议演讲中。


小智 7

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

您需要执行一些步骤:

第 1 步(创建 Syslog 服务)

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

local6.*    /var/log/commands.log
Run Code Online (Sandbox Code Playgroud)

第 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]"'
Run Code Online (Sandbox Code Playgroud)

第 3 步(重新启动 Syslog 服务)

# /etc/init.d/rsyslog
Run Code Online (Sandbox Code Playgroud)

这是一个日志示例:

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