Я устанавливаю квоту на моем сервере Linode, на котором запущен Ubuntu 16.10, и я получаю следующую ошибку: Can not stat () установленное устройство / dev / root: нет такого файла или каталога
Итак, чтобы исправить это, я достиг этого потока для исправления, который делается путем добавления
ln -s /dev/xvda /dev/root
/etc/init.d/quota restart
к /etc/rc.local. Но Ubuntu 16.10 больше не использует rc.local, а использует этот поток . Какова альтернатива для rc.local, Как я могу запустить указанные выше команды при запуске?
Также я включил службу с помощью systemctl enable rc-local.service, но для меня это не сработало. Любое руководство было бы оценено.
Я думаю, вам не следует создавать новую услугу, как предлагается в ссылке Джорджа. [F4] уже существует в systemd, и файл службы предполагает, что rc.local, если он существует и является исполняемым, автоматически извлекается в multi-user.target. Поэтому нет необходимости воссоздавать или заставлять что-то, что было сделано другим способом с помощью systemd-rc-local-generator.
Быстрое обходное решение (я не знаю, каков ли это канонический путь):
В терминале do:
printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local
sudo reboot
После этого rc.local будет вызван при запуске системы. Вставьте то, что вы хотите.
Если вы делаете в терминале:
sudo systemctl edit --full rc-local
Вы можете видеть, что комментарий главы содержит строки, такие как: [ ! d9] # 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 ...).
Я думаю, вам не следует создавать новую услугу, как предлагается в ссылке Джорджа. [F4] уже существует в systemd, и файл службы предполагает, что rc.local, если он существует и является исполняемым, автоматически извлекается в multi-user.target. Поэтому нет необходимости воссоздавать или заставлять что-то, что было сделано другим способом с помощью systemd-rc-local-generator.
Быстрое обходное решение (я не знаю, каков ли это канонический путь):
В терминале do:
printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local
sudo reboot
После этого rc.local будет вызван при запуске системы. Вставьте то, что вы хотите.
Если вы делаете в терминале:
sudo systemctl edit --full rc-local
Вы можете видеть, что комментарий главы содержит строки, такие как: [ ! d9] # 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 ...).
Я видел это решение, которое предполагает использование systemd здесь:
Создайте службу:sudo vi /etc/systemd/system/rc-local.service
Добавьте свой код там: [Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
Создайте и убедитесь, что /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.service
sudo systemctl status rc-local.service
Если все пойдет хорошо, вы можете добавить свой code в файл /etc/rc.local, а затем перезапустить его. Примечание: проверено на Lubuntu 16.10.
Источник:
Чтобы добавить к ответу Яна, что, в отличие от обычного файла 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)
После этого не забудьте systemctl daemon-reload.
Я видел это решение, которое предполагает использование systemd здесь:
Создайте службу:sudo vi /etc/systemd/system/rc-local.service
Добавьте свой код там: [Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
Создайте и убедитесь, что /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.service
sudo systemctl status rc-local.service
Если все пойдет хорошо, вы можете добавить свой code в файл /etc/rc.local, а затем перезапустить его. Примечание: проверено на Lubuntu 16.10.
Источник:
Чтобы добавить к ответу Яна, что, в отличие от обычного файла 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)
После этого не забудьте systemctl daemon-reload.
Чтобы добавить к ответу Jan , что, в отличие от обычного файла 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
)
После этого не забудьте systemctl daemon-reload
.
Чтобы добавить к ответу Jan , что, в отличие от обычного файла 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
)
После этого не забудьте systemctl daemon-reload
.