the input device is not a TTY

はじめに

cronでdockerコンテナ内のシェルを動かし、結果をリダイレクトしようとした際、

 the input device is not a TTY

とエラーが出て、期待通りに動かなかった。

原因

cronで動かすのに
docker exec -it

-it のtが邪魔していた。

 

dockerのコンテナ内に入るとき、もしくはコンテナ内のシェルを動かすとき、docker exec -itがもはや決まり文句のように打っていたが、

改めてオプションを見直して見ると、-t はTTYデバイスに割り当てるオプションらしい。

 

https://docs.docker.com/engine/reference/commandline/exec/#usage

これがcronで実行するときには不要であり、これがあることによりエラーになる。

対応策

tオプションを削る

これで問題なくcronで実行される

Facebook Comments