Мое пошаговое:
После входа в систему:
root@myserver.com:~$
Но, потребуйте у cntrl+D выхода
root@myserver.com:~$ exit
root@myserver.com:~$ exit
...
root@myserver.com:~$
5. Не выходить.
Почему?
Скажите мне корректный метод.
Можно сохранить флаг в переменной среды:
if [ -z $INITIAL_SUDO ]; then
exec sudo -s INITIAL_SUDO=1
fi
В этом случае начальная оболочка, вызванная ssh, не будет иметь INITIAL_SUDO
флаг на и это породит процесс sudo. Shell, вызванный sudo, с другой стороны, будет иметь INITIAL_SUDO
переменный набор и не попытается назвать sudo снова.
Обратите внимание, что я звоню exec sudo -s
вместо sudo -s
. Иначе необходимо будет нажать ctrl+D дважды: сначала для корневой оболочки и второй для начальной оболочки, которая вызвала sudo во-первых.
Команда sudo -s
выполняет новую оболочку, которая выполняет Ваш .bashrc.
Таким образом, то, что произошло здесь, то, что Вы создали цикл, куда каждая новая оболочка выполняет sudo-s, который в свою очередь создает новую оболочку. В какой-то момент цикл достиг предела RLIMIT_NPROC для системы и остановленного цикла, оставив огромную стопку вложенных оболочек. Этот предел слишком высок в большей части системы (8192 или неограничен), чтобы Вы вышли из них использующий Вашу клавиатуру.