script - 记录终端会话
script 使用伪终端记录交互式会话。默认记录终端输出,也可以另外保存时间信息并使用 scriptreplay 回放。
记录输出
# 仅允许当前用户访问新建日志
umask 077
# 开始记录;输入 exit 或按 Ctrl+D 结束
script --log-out session.log常用参数:
-a、--append:追加到已有日志。-O FILE、--log-out FILE:记录终端输出。-T FILE、--log-timing FILE:记录时间信息。-f、--flush:每次写入后立即刷新,便于实时查看,但会影响性能。-e、--return:返回子进程的退出状态。-o SIZE、--output-limit SIZE:限制日志大小。-q、--quiet:不显示开始和结束提示。
录制并回放
script --log-timing timing.log --log-out session.log
# 结束录制后回放
scriptreplay --log-timing timing.log --log-out session.logscriptreplay 只重新显示已记录内容,不会再次执行录制期间运行的命令。
安全与隐私
--log-in和--log-io会记录终端输入,即使密码输入时终端关闭了回显,也可能被完整保存。非必要不要启用。- 即使只记录输出,命令结果、提示符和报错仍可能包含令牌、主机名、路径或个人信息。
- 不建议把强制录制逻辑直接加入全局 Shell 初始化文件;容易造成递归启动,也涉及用户知情、日志权限和保留期限。
- 不要为日志目录设置所有用户可写权限。分享前应审查并脱敏,结束使用后按既定策略清理。
需要生成更适合分享的终端演示,可参考 Asciinema。