当我不小心输入了 reboot -f 时,如何恢复 bash 历史记录

当我不小心输入了 reboot -f 时,如何恢复 bash 历史记录

设想 :

在我的 Linux 服务器 [CentOS 7] 上工作之后,我reboot -f在终端中输入,是否可以检索我的bash 历史 重新启动后?

我理解这reboot -f会强制重启机器。这类似于按下 CPU 的电源按钮。不会关机。系统将立即重置。

根据手册页:

当使用 --force 调用或在运行级别 0 或 6 中时,此工具会调用 reboot(2) 系统调用本身(传递 REBOOTCOMMAND 参数)并直接重新启动系统。否则,它只会使用适当的参数调用 shutdown(8) 工具,而不传递 REBOOTCOMMAND 参数。

现在我的问题是:之后有可能检索 bash 历史记录reboot -f吗?

答案1

不,据我所知,因为 bash 会在内存中保留历史记录,并且仅在 shell 退出时写入或附加新的历史记录项。

当你“按下电源按钮”(或运行shutdown -f)显然 shell 不会正常退出,您会丢失该会话中的任何新历史记录,因为这些历史记录仅存在于内存中。其他会话中的先前历史记录项目当然仍然存在,因为重新启动不会删除现有的历史记录文件。

许多终端仿真器都保留一个回滚缓冲区,您可以从中恢复某些命令,甚至可以配置其他命令来记录所有内容。

答案2

在您的.bashrc或类似的文件中,添加PROMPT_COMMAND='history -a'。每次出现提示时,这会将历史记录刷新到磁盘。这对于在多个 shell 之间同步历史记录也很有用。

它不会帮助您处理已经丢失的数据,但它会帮助您保留未来的命令历史记录。

相关内容