Вывод команды `i3 --help` невозможно воспроизвести

ssh -T MACHINEB SCRIPT &поддерживает соединение SSH, пока работает SCRIPT. Это необходимо, потому что:

  1. Если SCRIPT производит какие-либо выходные данные, SSH должен передать их хосту.
  2. Если SCRIPT считывает ввод, SSH должен ретранслировать его с хоста. Это может быть немного тонко .
  3. Когда SCRIPT завершает работу, SSH передает клиенту свой статус выхода, и процесс 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-соединения

2
25.12.2019, 10:19
1 ответ

Вероятно, эта команда отправляет вывод в STDERR. И вы можете найти его таким образом:

i3 --help 2>&1|grep string

этот 2>&1перенаправит вывод STDERR (файлового обработчика 2 )в STDOUT (файловый обработчик 1)

3
27.01.2020, 22:02

Теги

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