1

По ошибке я выполнил эти команды:

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 ответ1

3

Я думаю, что вы как-то закончили

sh -> bash
bash -> bash

Когда система впервые пытается запустить оболочку, она входит в цикл, разрешающий bash , который, согласно символической ссылке,
то же самое, что bash , то же самое, что bash , то же самое, что bash , то же самое, что bash ... до тех пор, пока не будет исчерпана память для этого.


Чтобы решить эту проблему, нам нужно знать, что раньше было /bin/sh , обычно оно указывает на bash или dash . Какой дистрибутив Linux вы используете?

Обычно устанавливаются другие оболочки, такие как dash или zsh , но поскольку система ищет sh при запуске, я не вижу способа использовать их без посторонней помощи.

Я думаю, вам нужно будет загрузить работающую систему с компакт-диска или подключить жесткий диск к другому компьютеру;
А оттуда смонтируйте корневой диск и исправьте ссылку.
Если оболочка действительно была удалена командой "force" в ls -sf , вам нужно откуда-то получить двоичный файл оболочки.

Может также сработать, чтобы связать /bin/sh с похожей оболочкой, а не с той, на которую она указывала - (но, похоже, это было то, что вы делали в последний раз.)


The

sudo ln -sf bash /bin/bash

мог удалить /bin/bash - но когда я пытаюсь что-то подобное, я получаю сообщение об ошибке:

ln: bash and /bin/bash are the same file

Вы уверены в командах? В каком каталоге вы их запускали?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .