2016-08-09 4 views
0

Я создал экран «myscreen», и внутри этого экрана я перешел в папку, содержащую файл python test.py, который просто печатает что-то. Затем я отключил экран, и теперь я пытаюсь отправить ему команду, чтобы запустить мой скрипт. Так что я попытался следующая команда:linux отправка команды на существующий экран

screen -S myscreen -X stuff python test.py `echo -ne '\015'` 

без ошибок, но когда я открыл окно, чтобы увидеть выход там, я ничего не видел - экран был пуст. Я попробовал другой подход: я создал файл оболочки, где я писал:

screen -r myscreen 
python test.py 

Но результат был тот же, и ничего не было напечатано. Каковы причины неудачи обеих попыток и как я могу это исправить? Благодарю.

Update:

Я также попробовал это, не работает:

screen -X select myscreen 
screen -X readreg p <(echo python test.py) 

ответ

0

Если вы делаете это, как вы делаете, вы посылаете команды самого экрана, не в терминальном управлении внутри него.

Как вы можете отправлять команды внутри терминала?

Использование readreg и paste. Здесь я отправить данные из /tmp/file на экран 1:

$ screen -X select 1 
$ screen -X readreg p /tmp/file 
$ screen -X paste p 

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

$ screen -X readreg p <(echo python test.py) 
+0

это не работает, пожалуйста, см. мой обновленный вопрос. –

+0

Mister_L: вы должны запустить 'paste p' после этого + do' select 1', если хотите вставить в терминал 1 (по умолчанию это 0). –

+0

@IgorChubin Хмм, моя версия экрана, похоже, не похожа на замену процесса (в ней говорится: «no slurp: нет такого файла или каталога»), но он работает с временным файлом. – Teajay

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