1.为什么需要自动保存日志
(1) 运行tmux的时候,向上查看日志比较麻烦,要执行ctrl b + [ 的操作,并且查看的日志范围有限
(2) 如果在tmux窗口内,每次手动使用script命令保存日志,又太麻烦
2. 原理
• 使用linux中的script命令,可以实现将会话信息保存到指定文件中,使用方法:
(如果没有这个命令,需要安装一下)
script -f a.log 将当前会话打印信息输出到a.log文件中
exit 结束保存日志
3.具体方法
(1) 在~/bash_profile文件末尾添加以下内容
# log the output of tmux
TMUX_NAME=`cat ~/.tmp_tmux_name` 2> /dev/null
if [[ $TERM = "screen" ]] && [[ $(ps -p $PPID -o comm=) = "tmux" ]]; then
mkdir /home/logs 2> /dev/null
logname="$(date '+%d%m%Y%H%M%S').tmux_${TMUX_NAME}.log"
script -f /home/logs/${logname}
exit
fi
(2) 新增一个脚本tmux_savelog.sh
# cat tmux_savelog.sh
#!/bin/bash
if [ $# -ne 1 ];
then
echo "exit..."
exit 1
fi
SESSION_NAME=$1
echo "tmux a -t ${SESSION_NAME}"
echo "${SESSION_NAME}" > ~/.tmp_tmux_name
tmux new-session -s ${SESSION_NAME} -d -n "${SESSION_NAME}" "bash"
tmux send -t ${SESSION_NAME}.0 ". ${HOME}/.bash_profile" ENTER
(3) 运行脚本创建tmux的窗口
# ./tmux_savelog.sh test_session
tmux a -t test_session
打开这个窗口,可以看到该日志信息会被存放在相应的文件中。
# tmux a -t test_session