Вариант использования флага -p в tee

Почему бы вместо этого не изменить тест systemctl status postgresqlв сценарии резервного копирования на что-то вроде этого?

...
if systemctl is-active postgresql
then
    echo "PostgreSQL is active in non-clustered mode"
    # add here any pre-backup commands specific to non-clustered mode
elif systemctl is-active postgresqlHA
then
    echo "PostgreSQL is active in HA mode"
    # add here any pre-backup command specific to HA mode
else
    echo "PostgreSQL backup FAILURE: PostgreSQL is not running." >&2
    # add any commands to send a backup failure alert here if necessary
    exit 69 # EX_UNAVAILABLE
fi
# commands to run the backup here
...

Обратите внимание, что systemctl status <service...>предназначен в основном для интерактивного использования; для сценариев более удобными могут быть systemctl is-active <service...>или systemctl is-failed <service>. Если вы перечислите несколько сервисов, команды вернут код результата 0, если хотя бы один сервис удовлетворяет условию.

Если вам не нужно заботиться о том, какая версия службы запущена, вы даже можете протестировать их одновременно:

...
if ! systemctl is-active postgresql postgresqlHA
then
    echo "PostgreSQL backup FAILURE: neither clustered or non-clustered service is running." >&2
    exit 69 # EX_UNAVAILABLE
fi
# commands to run the backup here
...
1
20.02.2020, 15:21
1 ответ

Это эквивалент полной опции --output-error=warn-nopipe. Дополнительные пояснения приведены в списке MODE.

Поведение по умолчанию, по-видимому, такое, когда tee имеет несколько выходов, может быть, когда stdout ведет к каналу, или где побочный вывод осуществляется через подстановку процесса с помощью >( command ), тогда, если какой-либо считыватель любого канала дает сбой, tee завершает работу. -pзаставляет продолжить работу с другими выходами.

Это просто мое прочтение справочной страницы Linux Mint. :Я ничего из этого не тестировал.

1
28.04.2021, 23:22

Теги

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