设想 :
在我的 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 之间同步历史记录也很有用。
它不会帮助您处理已经丢失的数据,但它会帮助您保留未来的命令历史记录。