我正在通过 SSH 登录系统,并且我希望能够在注销时强制运行命令,无论是有意注销(退出 shell)还是因为我的 SSH 连接已断开/已终止。有什么办法可以设置吗?我现在最好的猜测是将登录 shell 更改为一个程序,该程序拦截 SSH 关闭时发送的信号(SIGHUP?)然后执行命令,但我想知道是否有更简洁的解决方案。
在我的脚本中,我目前有:
exec > >(tee -a /tmp/history.log) 2>&1
Run Code Online (Sandbox Code Playgroud)
这会将所有命令的 stderr 和 stdout 写入日志文件和 tty。不幸的是,这使得 tty 非常嘈杂,所以我宁愿在终端上只有 stdout,而在文件中同时包含 stdout 和 stderr (按正确的顺序,因此打开文件两次进行追加将不起作用)。对于我的一生,我无法弄清楚tee /dev/tty
让它工作所需的神奇 exec 调用(甚至使用 )。