Каков наилучший способ иметь отдельные службы systemd для запуска и завершения работы единственного сервиса? - PullRequest
0 голосов
/ 29 марта 2019

У меня есть приложение, которое использует связывание для перемещения / var / log в другой каталог и использует диск zram на месте.Я запускаю службу в начале загрузки, используя Before = systemd-journal-flush.service, чтобы диск zram был на месте до того, как journald начнет освобождаться в постоянном хранилище.

 [Unit]
Description=zram-config
DefaultDependencies=no
Before=systemd-journal-flush.service
After=local-fs.target


[Service]
Type=oneshot
ExecStart=/usr/local/bin/zram-config start
ExecStop=/usr/local/bin/zram-config stop
TimeoutSec=120
RemainAfterExit=yes

[Install]
WantedBy=sysinit.target

Я сам признался, чтоSystemd, но, как я понимаю, выключение - это только обратный порядок запуска.Таким образом, ранний запуск означает, вероятно, позднее закрытие, так как я пробовал различные варианты, но это, кажется, ловушка 22.

Я глуп, и вполне ли возможно создать 2 однопоточных сервиса для запуска?и завершить работу, чтобы начальный Sync2Zram и закрывающий конечный WriteFromZram имели 2 отдельные службы, где ExecStart = / usr / local / bin / zram-config start и ExecStop = / usr / local / bin / zram-config stop являются однотипными в 2 службах?Если я получаю раннюю загрузку до systemd-journal-flush.service, то службы, необходимые для завершения работы, закрываются / закрываются, а службы окончательной остановки не завершаются до завершения завершения.Изменение порядка выше вызывает у меня некоторые проблемы, когда журнал переключается на / run / log, поскольку / var / log может быть недоступен.

Полный сценарий (служба) находится на https://github.com/StuartIanNaylor/zram-configесли это поможет.Многое унаследовано от https://github.com/azlux/log2ram, и я просто думаю без особого знания иметь две отдельные службы onehot для запуска и завершения работы, поскольку все, что делается, - это начальный контроль и управление завершением работы служб zram?

...