linux - 如何记录所有终端 session 并在关闭窗口后正确退出

标签 linux shell terminal zsh

我正在尝试设置我的环境,以便 asciinema 自动记录所有打开的终端 session ,以便能够轻松重播我的历史记录中的任何内容。

我使用 zsh shell 并在 .zshrc 中运行:

if [ "$ASCIINEMA_REC" != "1" ]; then
    local out="rec.json"
    local loc="$HOME/.asciinema"

    if [ -d "${loc}" ]; then
        out="${loc}`pwd`/rec_`date +'%Y-%b-%d_%H-%M-%S'`_pts-`basename $TTY`.json"
        mkdir -p "`dirname ${out}`"
    fi

    asciinema rec -q -w 1 ${out}; 
fi

但是问题是当我关闭终端窗口时(使用X)。输出未正确关闭并最终为空。此外,现在初始化需要更长的时间,因为它要初始化 zsh shell 两次。

最佳答案

我会尝试trap SIGHUPEXIT 以便您可以在终端关闭时处理清理命令。

trap 'command' SIGHUP EXIT

因此,在您的情况下,可能要确保您正确关闭了 asciinema 运行的伪终端。

也许:

trap 'exit 0;' SIGHUP EXIT # Should exit the current terminal session, hopefully the asciinema one!

引用:Which signals are sent when closing a terminal

关于linux - 如何记录所有终端 session 并在关闭窗口后正确退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42733450/

相关文章:

c - setuid(0) 无法为 root 拥有的程序执行

macos - 如何在 MAC OS 上使用终端将多个 CSV 文件合并为一个?

linux - 在不提示的情况下解压缩目录中的所有文件

终端中的 Python

c++ - 如何在 Linux 中以编程方式检测 IP 地址更改?

linux - 如何创建一个脚本来 grep 用户的两个输入

linux - 如何将 StdOut 添加到文件的顶部(而不是底部)?

linux - 如何使用定时任务

shell - 在 AppleScript 中运行时查看 shell 脚本的输出或进度

bash - 在哪里查看 Bash 内置命令的手册页?