к /etc/rc.local. Но Ubuntu 16.10 не использует rc.local больше вместо этого использует systemd. Какова альтернатива для rc.local, Как я могу выполнить вышеуказанные команды при запуске?
Кроме того, я включил службу с помощью systemctl enable rc-local.service но у меня это не сработало. Любая зацепка была бы признательна.
Я думаю, вам не следует создавать новую службу, как это было предложено в ссылке Джорджем.То rc-local.service уже существует в systemd, и служебный файл предполагает, что rc.local, если он существует и является исполняемым, автоматически втягивается в multi-user.target.Так что нет необходимости воссоздавать или форсировать что-то, что просто сделано другим способом с помощью systemd-rc-local-generator.
Одно решение
Быстрое решение (я не знаю, является ли это каноническим способом):
В терминале сделайте:
printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.localsudo chmod +x /etc/rc.localsudo reboot
После этого в rc.local будет вызван при запуске системы. Вставляйте то, что вам нравится.
Фон
Если вы делаете это в терминале:
sudo systemctl edit --full rc-local
Вы можете видеть, что заголовок комментария содержит такие строки, как:
# This unit gets pulled automatically into multi-user.target by# systemd-rc-local-generator if /etc/rc.local is executable.
Это указывает на то, что в этой системе, если есть файл, называемый /etc/rc.local который является исполняемым, затем он будет автоматически перенесен в multi-user.target. Итак, вы просто создаете соответствующий файл (sudo touch...) и сделать его исполняемым (sudo chmod +x ...).
Создайте и убедитесь, что /etc/rc.local является исполняемым и добавьте этот код внутрь него:
sudo chmod +x /etc/rc.local
#!/bin/sh -e## rc.local## 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.## In order to enable or disable this script just change the execution# bits.## By default this script does nothing.exit 0
Включите службу:
sudo systemctl enable rc-local
Запустите сервис и проверьте статус:
sudo systemctl start rc-local.servicesudo systemctl status rc-local.service
Если все пойдет хорошо, вы можете добавить свой code к /etc/rc.local файл, затем перезапустите его.
Чтобы добавить к Ответ Яна это, в отличие от обычного rc.localфайл, rc-local service выполняется не после запуска всех служб, а после того, как сеть подключится к сети.
В некоторых случаях вам может потребоваться выполнить команды из rc.local позже. Например, я хотел, чтобы он был выполнен после lxd начало.
В этом случае вы можете редактировать rc-local service зависимости запуска путем создания раскрывающегося файла conf:/etc/systemd/system/rc-local.service.d/override.confс содержанием:
[Unit]After=network.target lxd.service
Где вы можете добавить нужное название подразделения (как я добавил lxd.service)
Пакет квот не должен искать /dev/root. Исправьте основную ошибку, и тогда вам не нужно будет создавать эту символическую ссылку. Он должен быть настроен на включение квот для всех файловых систем, перечисленных в /etc/fstab (предпочтительно по uuid) с опцией квотирования.