리눅스 기초 · 프로세스와 신호 · 퀴즈
퀴즈: 프로세스와 신호
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
애플리케이션이 SIGTERM 을 잡아서 정리 작업을 합니다. 이 앱을 SIGKILL 로 죽였을 때 정리 코드는?
- 실행되지 않는다. SIGKILL 은 잡을 수도 무시할 수도 없다
- SIGKILL 도 핸들러가 등록돼 있으면 실행된다
- SIGTERM 핸들러가 대신 호출된다
- 커널이 유예 시간을 준 뒤 실행한다
ps 목록에 Z 상태 프로세스가 수천 개 쌓였습니다. 가장 정확한 설명은?
- 메모리를 많이 먹으므로 즉시 kill -9 해야 한다
- 무한 루프에 빠진 프로세스다
- D 상태에서 빠져나오지 못한 프로세스다
- 이미 죽은 프로세스이며 부모가 wait 하지 않아 PID 만 점유하고 있다
Dockerfile 에 CMD myapp 이라고 썼습니다. docker stop 할 때 생기는 문제는?
- 앱이 즉시 SIGKILL 을 받는다
- /bin/sh 가 PID 1 이 되어 SIGTERM 을 받고 앱에 전달하지 않는다
- SIGTERM 이 아니라 SIGHUP 이 전달된다
- 컨테이너가 종료되지 않고 계속 실행된다
CI 로그에서 종료 코드 143 을 봤습니다. 무슨 뜻인가요?
- 설정 오류로 종료됐다
- 메모리 부족으로 OOM Killer 에게 죽었다
- SIGTERM(15)으로 종료됐다. 128 + 15 이기 때문
- 테스트가 143개 실패했다
kill -9 를 보냈는데도 프로세스가 사라지지 않습니다. ps 의 상태가 D 입니다. 무엇을 해야 하나요?
- kill -9 를 여러 번 반복해서 보낸다
- 부모 프로세스를 먼저 죽인다
- 왜 커널 안에서 대기 중인지(스토리지·NFS 등)를 확인한다
- oom_score_adj 를 올린다
스크립트에서 pkill -f app 을 실행하기 전에 반드시 해야 할 일은?
- 같은 패턴으로 pgrep -a -f 를 먼저 실행해 대상 목록을 확인한다
- sudo 로 권한을 올린다
- kill -0 으로 프로세스 존재를 확인한다
- 패턴을 정규식 대신 정확한 이름으로 바꾼다