2015-06-05 4 views
1

У меня есть скрипт CI, который запускается в неинтерактивном контейнере докера. Одно из приложений, которые я использую (emacs в пакетном режиме), ожидает TTY, хотя он никогда не будет читать из него.немой терминал в неинтерактивном докере

В интерактивном режиме я могу использовать приложение /dev/tty, но в неинтерактивном режиме устройство даже не существует!

Как создать поддельный терминал в неинтерактивном контейнере докеров?

Кстати, у меня нет контроля над CI бегуна (дронов), который запускает скрипт ... так что я не могу добавить -i или -t

Запуск ls -R /dev дает

/dev: 
fd 
full 
fuse 
kcore 
mqueue 
null 
ptmx 
pts 
random 
shm 
stderr 
stdin 
stdout 
tty 
urandom 
zero 

/dev/mqueue: 

/dev/pts: 
ptmx 

/dev/shm: 
+0

Можете ли вы опубликовать репродуктор? – user2915097

+0

просто запускайте любое пакетное задание emacs в любом контейнере докера, с отключенным интерактивным режимом и без флага '-t'. – fommil

ответ

1

Try обернуть вызов вашего скрипта в вызове script (буквально). Аналогичная проблема возникает при подключении к другому пользователю, а затем к сеансу экрана.

$ script /dev/null 
$ emacs ... 
$ exit 

Смотрите также https://serverfault.com/a/116830

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