Оставьте удаленную команду запущенной, сохранив вывод

Оставьте удаленную команду запущенной, сохранив вывод

Сценарий;

Я подключился по SSH к машине, открыл новый сеанс Screen и запустил скрипт.

Несколько дней спустя я снова подключаюсь по SSH к этой машине, повторно подключаю сеанс экрана и смотрю на сгенерированный вывод. Однако я не могу прокрутить вывод обратно.

Насколько я могу судить, screen хранит один "экран" stdout-вывода. Если мой скрипт сгенерировал 100 строк вывода за 48 часов, я не могу увидеть его весь, только последние 40 с лишним строк или около того. Есть ли способ заставить screenхранить весь stdout из скрипта, который я оставляю запущенным, чтобы я мог снова подключить screen и PgUp/PgDn через него, как будто это скрипт, запущенный на моей локальной машине?

Возможно, screenэто не самый оптимальный способ сделать это? Есть ли лучший способ оставить скрипты запущенными на удаленных машинах после выхода из системы и иметь возможность повторно подключиться к этому процессу позднее и просмотреть все выходные данные?

решение1

Вы можете просто сохранить вывод в файле

my_command > mylogfile

Если вы хотите увидеть, что происходит во время выполнения команды, вы можете использовать tailвторой экран:

tail -f mylogfile

Вы сможете не только увидеть весь вывод, но и обработать его (сравнить, выполнить поиск и т. д.)

Редактироватьесли вы не хотите использовать, screenвы всегда можете использовать nohupи закрыть сеанс

nohup my_command > mylogfile &

решение2

Вы также можете включить ведение журнала выходных данных с помощью параметра -L при запуске экрана, через:

screen -L -S <screen_name>

Это создаст файл журнала с именем screenlog.0 в каталоге, в котором вы запустили экран из команды выше.

Для просмотра screenlog.0 используйте cat (не vi)SO Реф..

cat screenlog.0

решение3

Screen сохраняет журнал прошлых строк вывода; в документации Screen он называется «буфер истории прокрутки».

Для навигации по прокрутке нажмите C-a ESC(copy). Для навигации можно использовать клавиши со стрелками и PgUp/ PgDn, а такжедругие ключидля поиска и копирования текста. Нажмите ESCдля выхода из режима прокрутки/копирования.

По умолчанию Screen сохраняет только 100 строк. Поставьтеdefscrollbackдиректива в вашем распоряжении .screenrcдля изменения этой цифры.

Если вам нужен полный лог вашего скрипта, сохраните его в файле. Запустите его внутри Screen, чтобы иметь возможность подключиться к родительской оболочке и легко увидеть, выполняется ли скрипт, приостановить и перезапустить его и т. д. Или ответвить егосnohup. Чтобы отслеживать файл журнала по мере его роста, используйте tail -f.

решение4

Если вы хотите и увидеть вывод на экране, и записать его в журнал, то просто передайте его по конвейеру, teeуказав в качестве параметра имя вашего журнала.

Связанный контент