Один из способов сделать это - указать, что служба запускается перед другой службой, используя Before =
. В этом случае, поскольку графический интерфейс пользователя отсутствует, и необходимо запретить вход в консоль, необходимо использовать getty @ .service
. (Однако обратите внимание, что это параметризованная услуга, и в данном случае часть после @
представляет устройство, на котором следует запустить getty
). Например,
[Unit]
Description=Run script to set up environment
Before=getty@tty1.service getty@tty2.service getty@tty3.service getty@tty4.service getty@tty5.service getty@tty6.service
[Service]
Type=oneshot
ExecStart=/bin/myscript
Это позволит убедиться, что сценарий запускается до того, как getty
запустится на TTY 1-6.
Вместо этого можно создать (пустой) файл, который сообщит getty @ .service
не для запуска. Это имеет то преимущество, что автоматически добавляет условие ко всем экземплярам getty
, а не только 1-6.
Для этого сначала создайте файл перед запуском службы:
[Unit]
Description=Run script to set up environment
[Service]
Type=oneshot
ExecStartPre=/bin/touch /etc/no-login-console
ExecStart=/bin/myscript
ExecStopPost=/bin/rm /etc/no-login-console
Затем запустите systemctl edit getty @ .service
. Откроется редактор и будет создан файл «override», который будет фактически добавлен в основной служебный файл. Таким образом, вы можете сделать собственные настройки для сервиса, но по-прежнему иметь возможность использовать последние версии файла сервиса формы CentOS. В открывшемся редакторе введите:
[Unit]
ConditionPathExists=!/etc/no-login-console
Служба запускается только в том случае, если /etc/no-login-console
не существует. Сохраните и выйдите из редактора. При запуске systemctl cat getty @ .service
необходимо просмотреть основной файл службы с последующим переопределением.
Edit: Похоже, что systemctl edit
и systemctl cat
недоступны в версии systemd
, поставляемой в CentOS 7,1. Вместо этого запустите sudo vim/lib/systemd/system/getty @ .service.d/condition-path.conf
(где /lib/systemd/system/getty @ .service
- путь к файлу службы) и добавьте в файл вышеуказанный текст. Затем запустите systemctl daemon-reload
, а затем systemctl status getty @
. Выходные данные должны указывать на то, что был прочитан вложенный файл.
Выдача grep -v root/proc/mounts >/etc/mtab; echo «/dev/sda9/ext4 по умолчанию 1 1 »> >/etc/mtab
устранил эту проблему.
Проблема при запуске произошла из-за неправильного удаления записей файла mtab во время завершения работы. Как только корневая файловая система была добавлена в файл mtab (после загрузки), завершение работы произошло правильно, а затем запуск также работает нормально.
Строка, добавленная в mountfs
, не требовалась после правильного набора файла mtab.
Если компьютер теряет питание/принудительно отключается, это в одном случае снова происходит. Затем описанные выше шаги устраняют проблему.
-121--243990- ln -s/home/media/volume
Гораздо безопаснее с точки зрения безопасности. Не будет случайно перезаписывать или удалять важные системные файлы, например.