我尝试使用 ssh 连接到服务器(身份验证没问题)。
我懂了:
/bin/bash: No such file or directory
Connection to xxx closed.
之前,一切都工作正常,直到我真的做了一些愚蠢的事情并破坏了系统,现在我什至无法连接。
我刚刚在该服务器上安装了 ubuntu 16.04。我看到我想要的东西安装在 /usr/local/lib64 中,但在以前的版本(12.04)中它曾经位于 /usr/lib64 中,所以我做了
mv /usr/local/lib64 /usr/
在此之后,什么都不起作用。我什至不能ls
,唯一有效的命令是cd
.当我退出并尝试重新连接时,出现此错误。现在由于无法连接,我什至无法重新安装。
请帮忙,谢谢。
答案1
我还没有在任何地方安装 Ubuntu 16.04,但是根据 Linux 系统布局的当前趋势,我可以很好地猜测这里发生了什么。
/bin
和之间的旧区别以及和/usr/bin
之间的区别已经消失,因为我们不再需要在如此小的磁盘上安装系统,以至于我们可能无法在其上获取完整的用户环境。也就是说,现在即使是一次性 USB 闪存盘也足够大,可以安装完整的操作系统,因此我们不再需要区分传统上位于外部的单用户模式工具和隔离在某个地方的其他所有工具。/lib
/usr/lib
/usr
/usr
因为很多软件仍然相信这种区别 - 例如,当前的 Unix 或 Linux 类型系统没有与or平行的/local
or树,所以你不能完全摆脱- 现代操作系统模糊这个旧的常见方法区别在于将所有内容安装在符号链接目录中,例如out 到。 (反之亦然;这并不重要。)/share
/usr/local
/usr/share
/usr
/usr
/usr/bin
/bin
因此,您使用mv
命令所做的事情是“blowaway” /usr
,这可能是指向系统上统一操作系统安装目录的符号链接。这不仅取代了/usr/bin
诸如此类,它还有效地取代了/bin
。
换句话说,因为/usr/local/lib64/bin/bash
在你进行严厉的“修复”之前没有,所以现在不再有 a/usr/bin/bash
或 a /bin/bash
。
解决方案:将您的盒子启动到救援模式并将/usr
树恢复到之前的状态。您可能需要现有的工作 Ubuntu 16.04 系统作为参考,以了解如何恢复它。
至于你原来的问题,你的mv
命令从来都不是一个好的解决方案。如果您希望其中的程序/usr/local/lib64
无需显式路径即可运行,请将它们添加到您的 shell 中PATH
多变的。在 Ubuntu 上,这可能意味着编辑~/.bash_profile
.
由于您谈论的是lib
目录,因此您可能处理的不是可执行文件,而是库,在这种情况下,您可能需要添加一个条目,/etc/ld.so.conf.d
以便将该目录添加到全局库缓存中。man ldconfig
详情请参阅。