Как изменить файл systemctl с помощью сценария оболочки или boto в aws

Вы не можете использовать

case somecommand in ...

потому что:

case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac 

Обратите внимание на слово, то есть строку.

Использование $(true) не работает, так как true не дает никакого вывода на стандартный вывод.

Я бы предложил:

{ somecommand; err="$?"; } || true

case "$err" in ...

Это остановит выход скрипта, запущенного под errexit (-e).

Из руководства bash (из описания set -e):

Оболочка не завершает работу, если команда, которая завершилась неудачно, является частью списка команд, непосредственно следующего за ключевым словом while или until, частью теста после зарезервированных слов if или elif зарезервированных слов, частью любой команды, выполняемой в списке && или ||, за исключением команды, следующей за заключительной && или ||, любой команды в конвейере, кроме последней, или если возвращаемое значение команды инвертируется с помощью !

1
30.07.2017, 03:16
1 ответ

Возможно, есть способ. Когда вы развертываете эти файлы, вы можете редактировать их с помощью sed. Таким образом, ваш базовый файл конфигурации может иметь следующие строки:

...
Type=simple
ExecStart=/bin/airflow worker -q "nameOfWorker"
Restart=on-failure
...

И у вас может быть сценарий, который заменяет строку «nameOfWorker» на предполагаемое имя:

sed 's/nameOfWorker/${intendedName}/' YourBaseSystemd.service > NewlyMade.service

Таким образом, вы можете запускать эту строку кода при подготовке новых машин.

1
27.01.2020, 23:45

Теги

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