1

非インタラクティブな Docker コンテナーで実行される CI スクリプトがあります。私が使用しているアプリケーションの 1 つ (バッチ モードの emacs) は、TTY から読み取ることはありませんが、TTY を想定しています。

インタラクティブ モードではアプリケーションにパイプでき/dev/ttyますが、非インタラクティブ モードではデバイスが存在しません!

非インタラクティブな docker コンテナーで偽のターミナルを作成するにはどうすればよいですか?

ところで、スクリプトを開始する 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:
4

1 に答える 1

1

スクリプトの呼び出しをscript(文字通り) 呼び出しでラップしてみてください。別のユーザーに su してから screen セッションにアクセスすると、同様の問題が発生します。

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

https://serverfault.com/a/116830も参照してください。

于 2016-05-13T20:17:41.113 に答える