ssh -T MACHINEB SCRIPT &
поддерживает соединение SSH, пока работает SCRIPT. Это необходимо, потому что:
ssh
завершается с этим статусом. Если соединение прервется, это не повлияет на SCRIPT, если он не будет пытаться читать или писать в stdin, stdout или stderr. Поскольку терминал не задействован, SCRIPT не будет уничтожен SIGHUP при разрыве соединения. Однако, если SCRIPT попытается, скажем, напечатать сообщение об ошибке, это сообщение пройдет через соединение.
Вы должны сделать одно из двух.
Метод пакетного задания :убедитесь, что SCRIPT не принимает никаких входных данных и записывает стандартный вывод и стандартные ошибки в файл.
ssh -T MACHINEB 'myprogram myprogram.log 2>&1'
Интерактивный метод :запустить СЦЕНАРИЙ внутри мультиплексора экрана:Экран или tmux .
ssh -T MACHINEB screen -S somename -dm myprogram
Вы можете увидеть, как работает ваша программа, подключившись к этому экранному сеансу.
ssh MACHINEB screen -S somename -dr
Сеанс screen завершается при выходе из программы. Чтобы сохранить его для просмотра вывода и ошибок программы, см. Предотвратить завершение сеанса экрана GNU после завершения исполняемого скрипта
См. также Выполнение удаленных команд,полное отсоединение от ssh-соединения
Вероятно, эта команда отправляет вывод в STDERR. И вы можете найти его таким образом:
i3 --help 2>&1|grep string
этот 2>&1
перенаправит вывод STDERR (файлового обработчика 2 )в STDOUT (файловый обработчик 1)