
매분마다 명령을 실행하는 간단한 스크립트를 만들었습니다.
#!/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