Как использовать `at` для планирования выполнения сценария в macOS?

Один из способов сделать это - указать, что служба запускается перед другой службой, используя 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 @ . Выходные данные должны указывать на то, что был прочитан вложенный файл.

-121--139228-

Выдача 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

Гораздо безопаснее с точки зрения безопасности. Не будет случайно перезаписывать или удалять важные системные файлы, например.

1
31.10.2018, 08:53
0 ответов

Теги

Похожие вопросы