Выполнение команд после символа амперсанда и на удаленной ssh сессии

Да, программа X использует переменную окружения DISPLAY, чтобы узнать, куда она должна отправить дисплей. При использовании SSH, ваша среда DISPLAY может быть автоматически настроена на пересылку DISPLAY обратно через соединение ssh на вашу клиентскую машину (вы можете проверить с помощью echo $DISPLAY). Если вы не запустили X-сервер на вашей локальной машине, ваша удаленная программа пожалуется, что не может открыть дисплей.

Вы должны иметь возможность явно запустить ваш браузер на локально подключенном дисплее, используя:

env DISPLAY=:0 chromium-browser &

:0 - сокращение для "локально подключенный дисплей номер 0".

.
1
18.10.2014, 02:45
1 ответ

Ничто в этом скрипте не должно предотвратить выполнение следующей команды или возврата в приглашение оболочки. Что может создавать впечатление, что подсказка исчезнет, ​​является выходом удаленных скриптов, что прибудет после возврата в оболочку. Чтобы избежать того, чтобы вы могли перенаправить STDOUT / STDERR в какой-то файл журнала.

Поскольку удаленные команды выполняются в фоновом режиме, исходный скрипт завершится до скрипты . Закончились выполнение: следующая команда не может предположить, что инициализация завершена. Чтобы начать все инициализации параллельно и дождитесь их всех, чтобы закончить, вы можете сделать следующее:

#!/bin/sh
while read host 
do
  ssh "$host" "/home/user/allocate.sh" &
done < ~/cluster
wait

, а затем можно возможно:

./initialize-cluster.sh && ./execute-something-else.sh

Ключ здесь - это команда wain , которая ждет дочерних процессов, чтобы закончить.

2
27.01.2020, 23:37

Теги

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