Если вы хотите запускать X-приложения через сеанс ssh
, вам просто нужно указать ssh
передавать трафик. Не запускайте xhost
и не переопределяйте DISPLAY
.
ssh -Yf remote-host some-x-application
Флаг -Y
указывает ssh
создать переменную окружения DISPLAY
на remote-host
и передавать полученный трафик через зашифрованное соединение. Флаг -f
указывает ssh
делать все это в фоновом режиме, так что создается впечатление, что сеанс завершился немедленно.
Если вы предпочитаете, чтобы на конце соединения ssh
была запущена интерактивная оболочка, вы можете поступить следующим образом:
ssh -Y remote-host
...log in as necessary...
some-x-application &
another-x-application &
...etc...
wait; exit
Почему бы вместо этого не изменить тест 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
...