)
Linux命令-script终端会话录制快速参考基本录制追加模式与实时输出执行命令录制带时间戳的录制用于 scriptreplay静默模式与格式控制实战操作审计与教程生成实战远程会话录制查看与分析录制文件scriptreplay 回放选项速查script命令用于记录终端会话中的所有输入和输出将其保存为文本文件。它就像是终端的录像机在生成操作教程、审计命令操作、排查问题时非常有用。录制的文件可以用scriptreplay按原始速度回放。快速参考script[选项][输出文件]script记录的是整个终端的原始输出包括 ANSI 转义序列和颜色因此回放时能还原完整的终端体验。退出录制的快捷键是exit或CtrlD。基本录制# 开始录制到默认文件typescriptscript# 录制到指定文件script my_session.log# 退出录制exit# 或按 CtrlD# 查看录制结果catmy_session.log追加模式与实时输出# -a 追加到已有文件不覆盖script-asession.log# -f 实时刷新输出可用于另一终端实时监控script-foutput.log# 在另一个终端中tail-foutput.log# 结合使用追加 实时刷新script-afoutput.log执行命令录制# -c 执行指定命令并录制其输出script-cls -la /etcetc_listing.log script-cmake make installbuild_log.txt script-cping -c 10 example.comping_log.txt# 录制编译过程含时间戳script-c./configure make -j$(nproc)build.log# 录制数据库备份过程script-cmysqldump -u root -p --all-databases backup.sqlbackup_session.log带时间戳的录制用于 scriptreplay# -t 将时序信息写入 stderr# 2 重定向时序信息到单独文件script-t2timing.log output.log# 操作结束后可以用 scriptreplay 回放# scriptreplay timing.log output.log# 同时追加模式录制script-ta2timing.log output.log# 使用自定义时间除数加速/减速回放# scriptreplay -d 2 timing.log output.log # 2倍速回放静默模式与格式控制# -q 静默模式不显示开始/结束提示script-qsilent.log# -f 和 -q 结合后台静默录制script-q-f-amonitor.log# 指定文件描述符script-foutput.log# 限制录制时间配合 timeouttimeout60script-qtimed_session.log实战操作审计与教程生成#!/bin/bash# 操作审计脚本 - 自动开始录制会话# 用法: ./audit.shLOG_DIR$HOME/terminal_logsmkdir-p$LOG_DIRTIMESTAMP$(date%Y%m%d_%H%M%S)LOG_FILE${LOG_DIR}/session_${TIMESTAMP}.logTIMING_FILE${LOG_DIR}/timing_${TIMESTAMP}.logecho录制开始:$(date)echo日志文件:$LOG_FILEecho时序文件:$TIMING_FILEecho输入 exit 或 CtrlD 结束录制echo# 开始录制带时间戳用于回放script-q-f-t2$TIMING_FILE$LOG_FILE#!/bin/bash# 教程录制助手# 用法: ./record_tutorial.sh 教程名称TUTORIAL_NAME${1:-demo}DATE$(date%Y%m%d)OUTPUT_DIR./tutorials/$DATEmkdir-p$OUTPUT_DIROUTPUT_LOG${OUTPUT_DIR}/${TUTORIAL_NAME}.logTIMING_LOG${OUTPUT_DIR}/${TUTORIAL_NAME}.timingecho 教程录制:$TUTORIAL_NAMEecho开始时间:$(date)echo输出文件:$OUTPUT_LOGechoscript-t2$TIMING_LOG$OUTPUT_LOGechoecho录制完成echo回放命令: scriptreplay$TIMING_LOG$OUTPUT_LOG实战远程会话录制# 在 SSH 会话中自动录制sshuserremote_hostscript -q -f /tmp/session.log# 通过 sudo 运行时录制sudoscript-capt update apt upgrade -yupgrade.log# 在 crontab 中定时录制命令输出# 每小时记录系统状态0* * * * /usr/bin/script-q-cdf -h free -h uptime/var/log/hourly_status.log# 记录用户登录会话在 /etc/profile 中添加# echo script -q -a -f /var/log/users/${USER}_$(date %Y%m%d).log /etc/profile查看与分析录制文件# 直接查看录制内容catsession.log# 提取录制中的命令通过提示符识别grep-E^\$|^\#session.log|head-20# 统计命令数量grep-c^\$session.log# 查看录制文件大小ls-lhsession.log# 去除 ANSI 颜色码查看catsession.log|seds/\x1b\[[0-9;]*m//g|less# 提取纯文本使用 stringsstrings session.log|less# 搜索录制中的关键操作grep-ierror\|fail\|warningsession.logscriptreplay 回放# 基本回放scriptreplay timing.log output.log# 指定回放速度倍率scriptreplay-d2timing.log output.log# 2倍速scriptreplay-d0.5timing.log output.log# 半速# 指定回放最大等待跳过长时间暂停scriptreplay-m3timing.log output.log# 最多等待3秒选项速查选项说明-a追加模式不覆盖已有文件-c CMD执行指定命令并录制输出-f实时刷新输出支持外部 tail 监控-q静默模式不显示开始/结束提示-t将时序信息输出到 stderr供 scriptreplay 使用-V显示版本信息script是 Linux 系统管理中的隐形利器。配合scriptreplay它可以完整复现终端操作过程在故障排查、合规审计和技术培训中发挥着不可替代的作用。在现代终端复用器tmux/screen也有日志功能但script的优势在于轻量和普适——任何终端环境都能使用。