设想 :
在我的 Linux 服务器 [CentOS 7] 上工作后,我输入reboot -f
了我的终端,重新启动后是否可以检索我的bash 历史记录 ?
我知道这reboot -f
将强制重启机器。这类似于按下 CPU 的电源按钮。不会发生关机。系统将立即重置。
根据手册页:
当使用 --force 或运行级别 0 或 6 调用时,此工具会调用 reboot(2) 系统调用本身(传递 REBOOTCOMMAND 参数)并直接重启系统。否则,这只会使用适当的参数调用 shutdown(8) 工具,而无需传递 REBOOTCOMMAND 参数。
现在我的问题是:是否可以在之后检索 bash 历史记录reboot -f
?
不,据我所知,bash 不会在内存中维护历史记录,并且仅在 shell 退出时写入或附加新的历史记录项。
当您“按下电源按钮”(或运行
shutdown -f
)时,shell 显然不会正常退出,并且您会丢失该会话的任何新历史记录,因为它只存在于内存中。当然,来自其他会话的先前历史项目仍然存在,因为重新启动不会删除现有的历史文件。许多终端仿真器保留一个回滚缓冲区,您可以从中恢复一些命令,甚至可以将其他命令配置为记录所有内容。
在你的
.bashrc
或类似的,添加PROMPT_COMMAND='history -a'
. 每次出现提示时,都会将历史记录刷新到磁盘。这对于同步多个 shell 之间的历史记录也很有用。它不会帮助您处理已经丢失的数据,但它会帮助您保持命令历史向前发展。