LabHub

셸 스크립팅 · 견고한 스크립트 · 퀴즈

퀴즈: 견고한 스크립트

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. set -e 만 켠 스크립트에서 curl URL | jq . | wc -l 의 curl 이 실패했습니다. 스크립트는?

    1. 즉시 종료된다
    2. jq 가 오류를 내며 종료된다
    3. 계속 진행된다. 파이프라인 상태는 마지막 명령의 것이기 때문
    4. curl 이 자동으로 재시도한다
  2. trap cleanup EXIT 를 쓸 때 핸들러 첫 줄에서 rc=$? 를 저장해야 하는 이유는?

    1. 핸들러 안에서 $? 를 쓰면 문법 오류가 나기 때문
    2. EXIT 트랩은 종료 코드를 받을 수 없기 때문
    3. set -e 와 충돌하기 때문
    4. 핸들러 안의 명령들이 $? 를 덮어써 원래 종료 코드가 사라지기 때문
  3. 임시 파일을 mktemp 로 만들어야 하는 이유로 가장 정확한 것은?

    1. 파일 이름이 짧아 성능이 좋기 때문
    2. trap 없이도 자동으로 지워지기 때문
    3. 동시 실행 충돌과 예측 가능한 이름을 노린 공격을 막기 때문
    4. /tmp 밖에는 임시 파일을 만들 수 없기 때문
  4. 5분마다 도는 크론 작업이 6분 걸리기 시작했습니다. 잠금을 걸면서 함께 해야 할 일은?

    1. '이미 실행 중이라 건너뜀'을 실패와 구분되는 종료 코드로 알린다
    2. 실행 주기를 1분으로 줄인다
    3. 잠금 파일을 /tmp 대신 홈 디렉터리에 만든다
    4. 두 번째 실행이 첫 번째를 종료시키게 한다
  5. 재시도 로직에서 반드시 확인해야 할 전제는?

    1. 명령이 충분히 빠른가
    2. 그 작업이 여러 번 실행돼도 안전한가(멱등한가)
    3. 네트워크를 쓰는 작업인가
    4. 종료 코드가 1인가
  6. set -u 가 막아 주는 대표적인 사고는?

    1. 변수 이름 오타로 빈 문자열이 넘어가 rm -rf "$DIR"/ 같은 명령이 엉뚱하게 동작하는 것
    2. 파이프라인 중간 명령이 실패해도 전체가 성공으로 지나가는 것
    3. 스크립트가 죽을 때 임시 파일이 남는 것
    4. 같은 스크립트가 동시에 돌아 충돌하는 것