У меня screen
запущен экземпляр, и мне нужно выполнить некоторый код внутри screen
и вывести результат в мой скрипт.
Первая часть довольно проста, я просто screen -S session_name -X eval 'stuff "$cmd"\015'
.
(Я изменил строку, которую нашел в скрипте )
Вторая часть, получая вывод, более сложна. Как я могу получить весь вывод, независимо от его размера?
bash
logs
gnu-screen
recording
1ace
источник
источник
screen -X stuff …
; вопрос похож на твой .stuff
, что я с трудом понимал.Ответы:
Вы можете начать
screen
с-L
опцией. Это заставит экран создать файлscreenlog.n
(n-я часть числовая, начиная с нуля) в текущем рабочем каталоге.В вашем случае это будет выглядеть примерно так:
screen -S session_name -L -X eval 'stuff "$cmd"\015'
До тех пор, пока вы не забудете убрать потом, это должно соответствовать тому, что вы хотите.
Для последней строки журнала его можно легко получить с помощью
tail -1 screenlog.0
или весь журнал может быть проанализирован по вашему желанию.источник
screen
команда, которую я дал, состояла в том, чтобы просто отправить команду. Для запускаscreen
я использовалscreen -dmS name program
;-)Еще один нюанс, который может пригодиться в будущем: если вы находитесь на сеансе экрана, вы можете в интерактивном режиме запросить файл журнала, который будет создан. Нажмите ctrl- a H(Control-A, за которым следует заглавная H), чтобы запросить экран, чтобы начать выгрузку любого окна, в котором вы находитесь, в файл журнала.
источник
man screen
мнению, я должен набрать CA H, только без Control для H. Sad, чтобы это не захватывало предыдущий журнал.