当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

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

最佳解决方法

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

script screen.log

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

exit

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

资料来源:Ubuntu Guide – How To Log Terminal Commands

次佳解决方法

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

第三种解决方法

我有一个更好的方法来使用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]"'

Ste#3(重启系统日志服务)

# /etc/init.d/rsyslog

这是一个日志示例:


Dec  7 22:13:00 validationdb2 mahasan: root@export [13291]: tail -f /var/log/mysql/mysql.log [0]
Dec  7 22:13:09 validationdb2 mahasan: root@export [13291]: ls -lh [0]
Dec  7 22:13:27 validationdb2 mahasan: root@export [13291]: touch test command  [0]

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2066.html,未经允许,请勿转载。