2017-02-23 9 views
0

私はcronをせずにスクリプト/ルート/再起動 - コンテナ名のcrontabが正しく

#!/bin/bash 
/usr/bin/docker restart container_name 2>/dev/null 
/usr/bin/docker exec -ti container_name /path/launcher.sh 2>/dev/null 

を持って、それが動作する動作しません。 crontab内の は最初のコマンドのみを処理します。 2つ目は機能しません。

パーミッション700とルート

が所有する私は、ファイル/tmp/container_name.logにstderrをリダイレクトします。エラーは

the input device is not a TTY 

答えて

0

エラーメッセージは、何が間違っているかを説明しようとしています。 execコマンドに-tを指定すると、TTYを割り当てようとします。 cronから実行すると、利用可能な擬似TTYがないため、失敗します。

はこれにスクリプトを変更してください:

#!/bin/bash 
/usr/bin/docker restart container_name 2>/dev/null 
/usr/bin/docker exec -i container_name /path/launcher.sh 2>/dev/null 

FYI:ここにcronとTTYに関する質問がたくさんあります。たとえば、この問題はかなりよく説明されています。"stdin: is not a tty" from cronjob