LabHub

리눅스 기초 · 프로세스와 신호 · 퀴즈

퀴즈: 프로세스와 신호

LabHub 에서 이어서 보기

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

  1. 애플리케이션이 SIGTERM 을 잡아서 정리 작업을 합니다. 이 앱을 SIGKILL 로 죽였을 때 정리 코드는?

    1. 실행되지 않는다. SIGKILL 은 잡을 수도 무시할 수도 없다
    2. SIGKILL 도 핸들러가 등록돼 있으면 실행된다
    3. SIGTERM 핸들러가 대신 호출된다
    4. 커널이 유예 시간을 준 뒤 실행한다
  2. ps 목록에 Z 상태 프로세스가 수천 개 쌓였습니다. 가장 정확한 설명은?

    1. 메모리를 많이 먹으므로 즉시 kill -9 해야 한다
    2. 무한 루프에 빠진 프로세스다
    3. D 상태에서 빠져나오지 못한 프로세스다
    4. 이미 죽은 프로세스이며 부모가 wait 하지 않아 PID 만 점유하고 있다
  3. Dockerfile 에 CMD myapp 이라고 썼습니다. docker stop 할 때 생기는 문제는?

    1. 앱이 즉시 SIGKILL 을 받는다
    2. /bin/sh 가 PID 1 이 되어 SIGTERM 을 받고 앱에 전달하지 않는다
    3. SIGTERM 이 아니라 SIGHUP 이 전달된다
    4. 컨테이너가 종료되지 않고 계속 실행된다
  4. CI 로그에서 종료 코드 143 을 봤습니다. 무슨 뜻인가요?

    1. 설정 오류로 종료됐다
    2. 메모리 부족으로 OOM Killer 에게 죽었다
    3. SIGTERM(15)으로 종료됐다. 128 + 15 이기 때문
    4. 테스트가 143개 실패했다
  5. kill -9 를 보냈는데도 프로세스가 사라지지 않습니다. ps 의 상태가 D 입니다. 무엇을 해야 하나요?

    1. kill -9 를 여러 번 반복해서 보낸다
    2. 부모 프로세스를 먼저 죽인다
    3. 왜 커널 안에서 대기 중인지(스토리지·NFS 등)를 확인한다
    4. oom_score_adj 를 올린다
  6. 스크립트에서 pkill -f app 을 실행하기 전에 반드시 해야 할 일은?

    1. 같은 패턴으로 pgrep -a -f 를 먼저 실행해 대상 목록을 확인한다
    2. sudo 로 권한을 올린다
    3. kill -0 으로 프로세스 존재를 확인한다
    4. 패턴을 정규식 대신 정확한 이름으로 바꾼다