毎分コマンドを実行する簡単なスクリプトを作成しました。
#!/usr/bin/env sh
while true; do
exec "$@"
sleep 60
done
アイデアはそれを作ることですドッカーエントリーポイントこれにより、Laravelスケジューラを実行できます。しかし、画像を構築する前にテストしたいと思います。
$ ./entrypoint/entrypoint_cron.sh echo "Hello"
Hello
ただし、コマンドは一度だけ実行されます。なぜ?引数に指定されたコマンドがCtrl+で終了するまで連続ループで実行するにはどうすればよいですかC?
答え1
このexec
コマンドは現在のプロセスを新しいプロセスに置き換えます。成功した実行とは、スクリプトの実行を続行しないことを意味します。
POSIX(についてのドキュメントsh
、参照man sh
)は以下を作成します。このように、
commandとして指定すると、
exec
新しいプロセスを作成せずにシェルがcommandに置き換えられます。引数が指定されている場合は、コマンドの引数でなければなりません。
たぶんあなたはこれを意味しますか?
#!/bin/sh
while true
do
"$@"
sleep 60
done