Неверный пароль шифрования жесткого диска Linux после изменения размера памяти

Другой подход заключается в объединении нескольких элементов в один служебный файл (без таймера ). Элементы:

  • «самостоятельный -перезапуск» Type=oneshotслужбы с директивой EnvironmentFile=/path/to/mlrpt-textfile, которая считывает ваши параметры mlrpt для одного спутникового прохода, закодированные как настроенные varenvs из «текстового файла mlrpt -». Этими параметрами будут 1 )$START _TIME и 2 )$END _TIME для прохождения спутника, 3 )$DURATION прохода и 4 )$WAIT time до следующего прохода.

  • два текстовых файла. Один назывался, скажем, «список mlrpt -» с полным списком настраиваемых параметров mlrpt, похожим, но не идентичным вашему списку с 22 записями. Другой текстовый файл будет содержать только одну запись (, это «текстовый файл mlrpt -», упомянутый выше )

  • .
  • механизм (, включающий простой сценарий ), который считывает первую запись из начала списка «mlrpt -», копирует ее в «текстовый файл mlrpt -», затем удаляет первую запись в "mlrpt -list" и повторяет тот же процесс по запросу -до тех пор, пока не останется ни одной записи в "mlrpt -list" (примечание :копировать в "mlrpt -textfile" не следует добавить, но перезаписать ).

Теперь файл службы oneshot -должен выглядеть примерно так, как показано ниже, чтобы объединить все три элемента в одно рабочее решение. Основной причиной использования oneshot является его способность вмещать не только одну, но и несколько ExecStart=директив. По замыслу директивы ExecStartвыполняются одна за другой. Это позволяет нам создать и запустить упомянутый выше «механизм» с помощью одного единственного сервисного модуля.

# /etc/systemd/system/myservice.service

[Unit]
Description=my service Service
ConditionPathExists=/path/to/mlrpt-textfile # contains $START_TIME, $END_TIME, $WAIT,     
                                            # and $DURATION for a single pass
ConditionFileNotEmpty=/path/to/mlrpt-textfile
EnvironmentFile=/path/to/mlrpt-textfile

[Service]
Type=oneshot
ExecStart=/usr/local/bin/mlrpt $START_TIME-$END_TIME -t $DURATION
ExecStart=/bin/sleep $WAIT
ExecStart=/path/to/script # script copies one entry from mlrpt-list to mlrpt-textfile
ExecStopPost=/bin/systemctl restart myservice.service

[Install]

Конечно, это требует дополнительной обработки, (например. зависимости должны быть добавлены по мере необходимости ). Сценарий также следует использовать для сбоя службы после последнего прохода, например, путем стирания записи в «текстовом файле mlrpt -» после последнего прохода (, чтобы ConditionFileNotEmptyне работал при перезапуске ).

1
03.11.2021, 09:52
0 ответов

Теги

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