我知道 .profile / .bash_profile 在终端会话启动时加载,无论是通过本地计算机还是 SSH。会话终止时是否加载/调用任何文件?
原因:我将 .profile 设置为记录连接到特定用户的终端会话的日期和 IP 地址。
答案1
~/.bash_logout
当登录 shell 退出时由 bash 执行。但您也可以使用获取 IP 地址和日期详细信息lastlog
,您尝试过吗?
~/.bash_logout
,但会话时不会运行kill -9 $$
或可能被强制关闭
答案2
所有 shell 都有一种在 shell 退出时运行某些代码的方法:陷阱。 “陷阱”是外壳词信号处理程序。您可以通过列出信号的名称( INT
、 、 ...)或其编号来设置信号陷阱HUP
,或者使用特殊值0
或EXIT
在 shell 正常退出时(通过到达输入末尾或 ifexit
被调用)。
trap 'echo "$IP_ADDRESS logged out at $(date)" >>"$LOG_FILE"' EXIT HUP INT TERM
你不能陷入陷阱kill -KILL
或停电。
我怀疑你所做的事情是否真的有用。此信息已记录在系统日志中。那里更可靠,因为你kill -KILL
也可以进入。该命令last
显示自上次日志轮换以来所有过去和当前会话的开始日期、结束日期和来源(终端或 IP 地址)。