하위 프로세스가 충돌했음을 상위 프로세스에 알리기 위해 (상위 프로세스?)에 신호를 보내는 방법

하위 프로세스가 충돌했음을 상위 프로세스에 알리기 위해 (상위 프로세스?)에 신호를 보내는 방법

이것이 최선의 방법은 아닐 수도 있지만 시도해 보고 있습니다. 다음과 같이 docker와 함께 사용하는 Entrypoint.sh 파일이 있습니다.

ENTRYPOINT ["./entrypoint.sh"]

이것은 Entrypoint.sh입니다.

#!/usr/bin/env bash

args="$@"
echo "docker container arguments: '$args'"


"${args}" || {
    echo "Application exited with a non-zero code: '$?'";
    exit 1;
 }

글쎄, 실제로 다음과 같이 업데이트했습니다.

#!/usr/bin/env bash

args="$@"
echo "docker container arguments: '$args'"

while true; do
  "${args}" || {
    echo "Application exited with a non-zero code: '$?'";
    kill -SIGUSR1 "$(ps -o ppid= -p $$)"  ##### THIS
    sleep 3;
  };
done;

무한 루프를 수행하는 것은 아마도 나쁜 생각일 것입니다. 그냥 충돌이 발생하도록 두고 새 컨테이너를 다시 시작해야 합니다.

하지만 논쟁을 위해서-내 질문은-> 내 프로세스가 계속 충돌하여 프로세스를 제거하고 새 프로세스에 넣을 수 있도록 컨테이너 오케스트레이터에 보낼 수 있는 신호가 있습니까?

배포할 새 코드가 없으면 3초 후에 자동으로 다시 시작되도록 합니다. 새 코드가 있으면 새 컨테이너를 배포해야 합니다.

관련 정보