Как сохранить вывод отдельного экрана со сценарием?

У меня есть скрипт Python test.py который содержит только: print('hi') . Я хочу запустить его на screen чтобы выход screen сохранялся script .

Я использую следующую команду для запуска test.py на screen , он отлично работает:

 screen -dm bash -c 'python test.py' 

Однако мне еще не удалось найти способ использовать script для сохранения вывода screen . Как мне это сделать?


Я безуспешно пытался:

  • script -c "screen -dm bash -c 'python test.py'" output.txt : выходной файл output.txt не содержит hi , но только:

     Script started on Fri 26 Aug 2016 01:04:59 PM EDT Script done on Fri 26 Aug 2016 01:04:59 PM EDT 

Я использую Ubuntu 14.04.4 LTS x64.


Документация:

https://www.gnu.org/software/screen/manual/screen.html :

-d -m: запуск экрана в отдельном режиме. Это создает новый сеанс, но не привязывается к нему. Это полезно для сценариев запуска системы.

http://linux.about.com/library/cmd/blcmdl1_sh.htm :

-c string: Если присутствует опция -c, команды считываются из строки. Если после строки есть аргументы, они назначаются позиционным параметрам, начиная с $ 0.

страница руководства скрипта:

-c, – команда командной строки, а не интерактивная оболочка

2 Solutions collect form web for “Как сохранить вывод отдельного экрана со сценарием?”

Вы должны сделать это наоборот, запустить script внутри screen :

 screen -dm bash -c 'script -c "python test.py" output.txt' 

Вы можете использовать флаг -L для создания автоматического файла screenlog.0

например

 $ screen -dm -L sh -c 'echo hello' $ cat screenlog.0 hello 

Если у вас длительный сеанс сеанса, который не регистрируется, вы можете включить регистрацию позже

например

 $ screen -dm -S test sh -c 'while [ 1 ]; do date; sleep 1; done' 

Теперь мы можем включить ведение журнала

 $ screen -S test -p 0 -X log 

Разрешите некоторое время, потому что запись записывается в блоках и …

 $ cat screenlog.0 Fri Aug 26 13:25:49 EDT 2016 Fri Aug 26 13:25:50 EDT 2016 Fri Aug 26 13:25:51 EDT 2016 Fri Aug 26 13:25:52 EDT 2016 Fri Aug 26 13:25:53 EDT 2016 Fri Aug 26 13:25:54 EDT 2016 Fri Aug 26 13:25:55 EDT 2016 Fri Aug 26 13:25:56 EDT 2016 Fri Aug 26 13:25:57 EDT 2016 Fri Aug 26 13:25:58 EDT 2016 
  • tmux vs. GNU Screen
  • не удалось нанести «ctrl-a H» на сеанс экрана
  • Вход в систему с конкретной оболочкой при входе в терминал
  • Linux. Отправка команды на экран через сценарий оболочки?
  • Переключить внешний дисплей под Wayland
  • Логика, чтобы определить, работает ли экран GNU
  • Удаленное начало сеанса экрана через ssh и немедленное закрытие сеанса ssh
  • Могу ли я легко найти свою историю на многих экранах?
  • Переменная Path и скрипт скрипта не будут запускать правильную версию python
  • Что вызывает этот экранный запрос «Экран, используемый <username> на host01.»?
  • Как запустить несколько заданий в разных сеансах экрана в Bash-скрипте?
  • Linux и Unix - лучшая ОС в мире.