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

У меня есть скрипт 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 
  • Как отправить вывод команды в буфер режима копирования экрана GNU
  • Может ли прокрутка колесика мыши работать в сеансе экрана?
  • Какое программное обеспечение является блокировкой или lck
  • Byobu - Новое окно с той же сессией ssh?
  • Переменная Path и скрипт скрипта не будут запускать правильную версию python
  • отобразить статус выхода с экрана
  • как отлаживать / исправлять сбои экрана при запуске
  • Перенаправление / grep'ing STDOUT существующей оболочки
  • Почему `> my.log 2> & 1 &` заставляет работу поддерживать выход из системы?
  • Совместное использование фоновых заданий между оболочками
  • Blink tmux вместо звука
  • Как изменить цвет жесткого диска экрана на основе зарегистрированного пользователя?
  • Linux и Unix - лучшая ОС в мире.