Cygwin64 Terminal 记录命令及返回结果
一.修改 ~/.bashrc 中的配置
1.方法一:修改 ~/.bashrc 中的配置(多个cygwin64 terminal也会写入一个日志)
if [ -z "$SCRIPT_RUNNING" ]; then
export SCRIPT_RUNNING=1
LOG_DIR=~/terminal_logs
mkdir -p "$LOG_DIR"
script -a -f "$LOG_DIR/$(date +%Y-%m-%d).log"
exit
fi
2.方法二:修改 ~/.bashrc 中的配置(保证每个cygwin64 terminal窗口单独一个日志文件)
if [ -z "$SCRIPT_RUNNING" ]; then
export SCRIPT_RUNNING=1
LOG_DIR=~/terminal_logs
mkdir -p "$LOG_DIR"
# 日期 + 开启时间 + 进程ID,三重保证唯一
LOG_FILE="$LOG_DIR/$(date +%Y-%m-%d_%H%M%S)_$$.log"
export CURRENT_LOG="$LOG_FILE" # 方便随时查看当前日志路径
script -f "$LOG_FILE"
exit
fi
3.方法三:修改 ~/.bashrc 中的配置(可选择记录或不记录,5秒无输入自动默认 Y 开始录制)
if [ -z "$SCRIPT_RUNNING" ]; then
read -t 5 -p "Record terminal? [Y/n] " _choice
_choice=${_choice:-Y}
if [[ "$_choice" =~ ^[Yy]$ ]]; then
export SCRIPT_RUNNING=1
LOG_DIR=~/terminal_logs
mkdir -p "$LOG_DIR"
LOG_FILE="$LOG_DIR/$(date +%Y-%m-%d_%H%M%S)_$$.log"
export CURRENT_LOG="$LOG_FILE"
script -f "$LOG_FILE"
exit
fi
fi
二.对记录的日志文件处理
1. 自动压缩旧日志
# 压缩7天前的日志(gzip后体积减少约70-80%)
find ~/terminal_logs/ -name "*.log" -mtime +7 -exec gzip {} \;
2.限制单个日志文件大小,写够50MB后不再写入
#用 ulimit 限制 script 子进程最大文件写入(#最大50MB):
(ulimit -f $((50*1024)); script -f "$LOG_FILE")
三.查看日志(避免乱码)
cat xxx.log | less -r
cat xxx.log | less -R (会有部分乱码)
less -r xxx.log
less -R xxx.log

浙公网安备 33010602011771号