Beeeat’s log

Beeeat’s log

プログラミングで出くわした知識やツール、日常生活、働き方その他色々なことをメモしていくブログ

BusyBox が提供している timeout コマンドの -t オプションが不要になっていた

きっかけ

CI/CDとしてAWS CodeBuildを使っているのだが、突然timeout: unrecognized option: tで突然失敗するようになった。 失敗したコマンドがドキュメントにある下記のコマンドである docs.aws.amazon.com

- timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"

原因

色々調べた結果、どうやらtimeoutコマンドを提供しているBusyBoxがv1.30.1になった際に引数の変更があったようだ

そもそも、BusyBoxって何?

そこまで、詳しくないのですいませんが、Wikiから引用

BusyBox は、Coreutilsなど標準UNIXコマンドで重要な多数のプログラムを単一の実行ファイルに「詰め込んで」提供する、特殊な方式のプログラムである ja.wikipedia.org

実際に確認してみた

確認したところ、該当のコミットはこれであることがわかった

timeout: fix arguments to match coreutils

直訳すると、「timeoutコマンドをcoreutilsと一致するように引数を修正」というのがわかる git.busybox.net

対応策

対応策は簡単で単純で下記のように-tを除けばOK。これで、AWS CodeBuildも動くようになった

- timeout 15 sh -c "until docker info; do echo .; sleep 1; done"