2016-08-15 8 views
1

Я посылаю команду tee от хоста 1 для размещения 2:Отправить тройник команды через SSH

ssh [email protected] '/path/run |& tee myFile.txt' 

Я использую tee так, что я получаю на выходе двоичного файла будет добавлен в myFile.txt

Проблемы У меня есть немного времени, я хочу восстановить контроль над моим локальным хостом, не имея большого количества распечаток. Поэтому я делаю CTRL + C. Это позволяет процессу на хост2 продолжать работать, чего я хочу, но он останавливает сам процесс tee, поэтому файл не заполняется.

Я попытался заменить |& tee myFile.txt' на 2>&1 myFile.txt' &, но это не помогло.

Как я могу гарантировать, что файл будет по-прежнему заполняться на host2, возвращая управление моей сессии на host1?

ответ

1

Если вы хотите записать результаты в какой-либо файл (работа с перенаправлением IO внутри nohup), вам необходимо заключить весь трубопровод в nohup. Он не использует расширения оболочки, так как аргумент только COMMANDARGS, поэтому использование sh является хорошим способом:

ssh [email protected] 'nohup sh -c "/path/run |& tee myFile.txt" &' 

, но обратите внимание, что nohup разъединяет терминал из командного муравья может выйти из строя. Полезно было бы перенаправить его непосредственно в файл:

ssh [email protected] 'nohup sh -c "/path/run &> myFile.txt" &' 

Вдохновение от SO answer.

0

использовать nohup, screen или tmux для фонового процесса.

+0

Я попытался использовать 'ssh user @ host2 'nohup/path/run | & tee myFile.txt'' и' ssh user @ host2' nohup/path/run 2> & 1 myFile.txt'', но это не Работа. Когда я запускаю ctrl + c после запуска, процесс продолжает работать на host2, но файл больше не записывает выходные данные. – DevShark

+0

'nohup/path/run >> myFile.txt' –

 Смежные вопросы

  • Нет связанных вопросов^_^