我错误地执行了以下命令:
sudo ln -sf bash /bin/sh
sudo ln -sf bash /bin/bash
当我在恢复模式下重新启动 Linux 服务器时收到以下消息:
init : Failed to spawn friendly-recovry pre-start process: unable to execute: Too many levels of symbolic links
Linux 无法运行。
任何帮助是极大的赞赏
答案1
我想你最终还是
sh -> bash
bash -> bash
当系统第一次尝试运行 shell 时,它将进入一个循环解析bash
,根据符号链接,与
相同bash
,与 相同bash
,与 相同bash
,与 相同bash
......,直到允许的内存用尽。
要修复此问题,我们需要知道/bin/sh
之前的内容,通常它指向bash
或dash
。您使用哪个 Linux 发行版?
通常还会安装其他 shell,例如dash
或zsh
,但是由于系统sh
在启动时会寻找它们,所以我认为如果没有外部帮助就无法使用这些 shell。
我认为您需要从 CD 启动实时系统,或将硬盘连接到另一台计算机;
然后从那里安装根磁盘并修复链接。
如果 shell 确实被 中的“强制”删除ls -sf
,则需要从某处获取 shell 二进制文件。
也可以链接/bin/sh
到类似的shell,而不是它指向的那个-(但这似乎是你最后做的。)
这
sudo ln -sf bash /bin/bash
可以删除/bin/bash
- 但是当我尝试类似操作时,出现错误:
ln: bash and /bin/bash are the same file
您确定这些命令吗?您在哪个目录中运行它们?