Встреченный странная проблема, сегодня я просто обновил Ubuntu от 17,04 до 17,10, и перезагрузите систему. Однако мой компьютер не может войти в рабочий стол, кажется что заблокированным моим сценарием в /etc/rc.local
. Сценарии как это:
sslocal -c /home/kinka/azure.conf
И комментируя сценарий, я могу обычно входить в свою Ubuntu. Кроме того, запущение скрипта в фоне также работает также.
sslocal -c /home/kinka/azure.conf &
Я не знаю то, что приводит к такому изменению?
Главная причина состоит в том, потому что по ее характеру это последовательно.
то, Что необходимо понять, - то, что /etc/rc.local
существует для совместимости со старой системой SysV init для перевода в рабочее состояние служб и SysV, первоначально начатого как последовательная система путь назад за добрые старые времена AT& T Unix. Как хаос объясняет в его ответе :
SysV выполняет сценарии в последовательном порядке на основе их числа в имени файла. Systemd не делает. Если зависимости встречены, systemd сразу запускает скрипты, не соблюдая нумерацию названий сценария.
Вторая причина состоит в том, что rc.local
сам по себе сценарий (заметил #!/bin/sh -e
строка?). Сценарии по своей природе последовательны также, поэтому если одна команда не закончилась или не была помещена в фон - сценарий должен будет ожидать программы A, чтобы сделать ее фетиш или перестать работать полностью, прежде чем что-либо еще сможет произойти. Кроме того, заметьте комментарии наверху файла:
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
Так Ваш sslocal -c /home/kinka/azure.conf
просто держит систему в заложниках и не позволяет сценарию выйти и начальная загрузка полной системы. Это - все.