CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
리눅스마스터 1급 · 1급리눅스마스터 1급
  • Week 1
    • 1.운영체제와 리눅스: 커널이 하는 일
    • 2.자유 소프트웨어와 배포판: 라이선스가 만든 생태계
    • 3.설치와 부팅: 전원을 켜는 순간부터
    • 4.파일시스템 구조와 파일의 종류: 모든 것은 파일이다
    • 5.Week 1 종합 복습: 개념을 꿰뚫는 시간
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
    • 1.프로세스 관리: PID부터 시그널·우선순위까지
    • 2.데몬과 프로세스 생애: fork·exec부터 좀비·고아까지
    • 3.시스템 초기화: init·런레벨에서 systemd·target까지
    • 4.작업 예약: cron의 5필드부터 at·batch까지
    • 5.Week 6 종합 복습: 프로세스·초기화·예약을 한 장으로 꿰기
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
  • Week 12
  • Week 13
  • Week 14
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← 리눅스마스터 1급/Week 6/Day 5

기준: 리눅스마스터 1급 출제 기준·오류 제보

리눅스마스터 1급· AssociateWeek 6 · Day 5읽기 약 12분
핵심 정리
  • 이번 주를 한 문장으로: 리눅스의 동적 세계는 프로세스 하나(PID 1)에서 출발해 트리로 자라고, 시그널로 대화하며, 시간표(cron)에 따라 일한다.
  • 조회는 ps aux(사용률·맨몸) / ps -ef(PPID·하이픈), 제어는 시그널 15 → 9 순서. 9·19만 차단 불가, nice 음수는 root 전용.
  • 생애는 fork(새 PID) → exec(PID 유지). 좀비 = 죽은 자식 + 안 거두는 부모(위험), 고아 = 산 자식 + 죽은 부모(1번 입양, 무해).
  • 초기화는 런레벨 ↔ target 대응이 전부 — 2·3·4 → multi-user, 5 → graphical, 0·6은 기본값 금지. start(지금)와 enable(부팅마다)은 별개.
  • 예약은 "분시일월요" 5필드(요일 0·7=일), 시스템 crontab은 사용자 필드가 붙어 6필드. cron=반복, at/batch=1회.

Day 5 - Week 6 종합 복습: 프로세스·초기화·예약을 한 장으로 꿰기

프로세스 식별과 제어 복습 (Day 1)

도구용도핵심 포인트
ps aux전체 + 사용률하이픈 없음, %CPU/%MEM
ps -ef전체 + PPID하이픈 있음, 부모 추적
top/htop실시간top은 기본 탑재, htop은 설치 필요
pgrep/pstree이름 검색/트리grep 자기참조 회피, 계층 시각화
  • 시그널은 프로세스와 대화하는 유일한 수단이다. 번호를 외운다.
번호이름의미차단 가능?
1SIGHUP설정 재읽기(reload)가능
2SIGINTCtrl+C 인터럽트가능
9SIGKILL강제 종료(즉시)불가
15SIGTERM정상 종료(kill 기본값)가능
19SIGSTOP정지불가
  • 우선순위는 nice 값(-20~19, 기본 0)으로 정한다. 낮을수록 우선, 음수는 root 전용, nice는 실행 시·renice는 실행 중.

⚠️ 함정 복습: ps aux(맨몸)와 ps -ef(하이픈)를 섞지 말 것. 종료는 15(정상)→9(강제) 순서. 9(SIGKILL)와 19(SIGSTOP)만 차단 불가. nice 음수는 root만. kill은 PID로, killall/pkill은 이름으로.

프로세스 생애 복습 (Day 2)

  • 새 프로세스는 fork(복제) → exec(교체)로 태어난다. fork는 새 PID의 자식을 만들고, exec는 PID를 유지한 채 프로그램만 바꾼다.
  • 작업 제어는 &(백그라운드)·Ctrl+Z(정지)·bg·fg·jobs·nohup.
  • 좀비와 고아는 정반대 개념이다.
구분좀비(Zombie)고아(Orphan)
자식죽음(Z, defunct)살아 있음
부모살았으나 wait 안 함먼저 종료됨
PPID원래 부모1번으로 입양
위험성PID 점유(위험)무해
해결부모 종료/재시작1번이 자동 회수

⚠️ 함정 복습: "좀비=죽은 자식+안 거두는 부모, 고아=산 자식+죽은 부모(1번 입양)". 좀비는 kill -9로 못 죽이고 부모를 처리해야 한다. Ctrl+Z는 정지(T)지 종료가 아니다. exec는 새 프로세스를 만들지 않는다(PID 유지).

시스템 초기화 복습 (Day 3)

  • 런레벨 ↔ target 대응이 핵심이다.
런레벨systemd target의미
0poweroff.target종료
1rescue.target단일 사용자(복구)
2·3·4multi-user.target텍스트 다중 사용자
5graphical.targetGUI
6reboot.target재부팅
  • systemctl의 start/enable 구분이 중요하다.
명령의미
start/stop지금 즉시 켜기/끄기
enable/disable부팅 시 자동 시작 등록/해제
enable --now등록 + 즉시 시작
statusactive(실행)·enabled(자동) 동시 확인

0·6은 기본 런레벨 금지. 2·3·4가 모두 multi-user.target. start(지금 한 번)와 enable(부팅 자동)은 별개. unit 파일 수정 후 daemon-reload 필수. [Install] WantedBy=가 enable 연결 대상. 로그는 journalctl -u 서비스 -f.

작업 예약 복습 (Day 4)

  • crontab 5필드: 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7, 0·7=일).
  • * , - / 기호로 패턴을 만들고, 일·요일 동시 지정은 OR다.
도구횟수시점데몬
cron반복정해진 주기crond
at1회지정 시각atd
batch1회부하 낮을 때atd
위치사용자 crontab시스템 crontab
필드5필드 + 명령5필드 + 사용자 + 명령(6)
관리crontab -e/-l/-r/etc/crontab, /etc/cron.d/

순서 "분시일월요". 요일 0·7=일요일. 사용자 crontab은 5필드, /etc/crontab은 6필드. cron=반복, at/batch=1회. allow > deny 우선. crontab -r은 전체 삭제 주의. at 목록은 atq, 삭제는 atrm.

자주 엮이는 시나리오 — 통합 사고

시나리오 A — 폭주 프로세스 안전 종료

ps aux --sort=-%cpu | head      # CPU 폭주 프로세스 식별
pgrep -l runaway                # 정확한 PID 확보
kill -15 1234                   # 먼저 정상 종료 시도
kill -9 1234                    # 안 되면 강제 종료
  • Day 1(ps·pgrep·시그널 15→9) 통합.

시나리오 B — 새 서비스 등록 + 자동 시작 + 로그 확인

vi /etc/systemd/system/myapp.service   # unit 파일 작성
systemctl daemon-reload                # 변경 인식(필수)
systemctl enable --now myapp           # 등록 + 즉시 시작
systemctl status myapp                 # active/enabled 확인
journalctl -u myapp -f                 # 실시간 로그 추적
  • Day 3(unit·daemon-reload·enable·journalctl) 통합.

시나리오 C — 매일 새벽 백업 자동화

crontab -e
# 0 3 * * * /usr/local/bin/backup.sh   # 매일 새벽 3시
crontab -l                             # 등록 확인
  • 백업 스크립트가 무거우면 nice로 양보하거나 batch로 한가할 때 실행 — Day 1·2·4 통합.

실무 장애 대응의 표준 흐름이 정확히 이 순서다 — ps/top으로 범인을 찾고(Day 1), 시그널 15→9로 안전하게 멈추고(Day 1), systemctl로 서비스를 정상 재기동하며(Day 3), journalctl로 원인 로그를 확인하고(Day 3), 재발 방지를 위해 cron에 점검 작업을 건다(Day 4). 이번 주 내용은 시험을 넘어 실무 운영의 골격이다.

📖 용어

  • PID 1번 : 커널이 처음 띄우는 프로세스(init/systemd). 모든 프로세스의 조상이자 초기화의 주인공이며 고아를 입양한다.
  • 시그널 : 프로세스에 보내는 번호 신호. 1 HUP(리로드) · 2 INT(Ctrl+C) · 9 KILL(강제) · 15 TERM(기본) · 19 STOP(정지).
  • 차단 불가 시그널 : 9(SIGKILL)와 19(SIGSTOP). 프로세스가 가로채거나 무시할 수 없다.
  • nice 값 : CPU 양보 정도를 나타내는 -20~19 값. 낮을수록 우선순위가 높고 음수는 root만 준다.
  • fork / exec : 자신을 복제해 새 PID의 자식을 만드는 것 / PID는 그대로 두고 실행 코드만 갈아끼우는 것.
  • 좀비 / 고아 : 죽은 자식을 부모가 안 거둔 상태(Z, 위험) / 부모가 먼저 죽어 1번에 입양된 산 자식(무해).
  • 런레벨 ↔ target : SysV의 0~6 상태와 systemd의 상태 묶음 unit. 2·3·4는 multi-user, 5는 graphical로 합쳐진다.
  • start vs enable : 지금 한 번 켜기 / 부팅할 때마다 자동으로 켜지게 등록하기. enable --now면 둘 다.
  • daemon-reload : unit 파일을 고친 뒤 systemd가 디스크 내용을 다시 읽게 하는 명령. 빠뜨리면 옛 설정으로 돈다.
  • crontab 5필드 : 분-시-일-월-요일. "분시일월요"로 외우고, 요일은 0과 7이 모두 일요일이다.
  • at / batch : 지정 시각에 1회 실행 / 시스템 부하가 낮아질 때 1회 실행. 둘 다 atd 데몬이 처리한다.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

모든 프로세스를 부모 프로세스(PPID) 컬럼과 함께 확인하기에 가장 적절한 명령은?

문제 2

다음 시그널 중 프로세스가 가로채거나 무시할 수 없어 반드시 동작하는 것끼리 묶은 것은?

문제 3

kill 명령에 옵션 없이 PID만 지정했을 때 전송되는 기본 시그널과, 그 성격으로 옳은 것은?

문제 4

nice 값에 대한 설명으로 옳은 것은?

문제 5

좀비(zombie) 프로세스와 고아(orphan) 프로세스의 차이로 옳은 것은?

문제 6

포그라운드 작업 중 Ctrl+Z를 입력했을 때의 결과로 옳은 것은?

문제 7

systemd 환경에서 옛 런레벨 3(텍스트 다중 사용자)에 대응하는 target은?

문제 8

systemctl enable sshd만 실행하고 start는 하지 않았을 때의 결과로 옳은 것은?

문제 9

systemd unit 파일을 새로 작성하거나 수정한 직후 반드시 실행해야 하는 명령은?

문제 10

crontab 항목 0 9 * * 1-5 /work.sh가 실행되는 시점으로 옳은 것은?

문제 11

사용자 crontab과 시스템 crontab(/etc/crontab)의 형식 차이로 옳은 것은?

문제 12

cron, at, batch에 대한 설명으로 옳은 것은?

이전작업 예약: cron의 5필드부터 at·batch까지Week 6 · Day 4다음 패키지 관리: RPM·YUM/DNF와 DEB·APT 두 계열을 한 손에Week 7 · Day 1

참고 공식 자료

  • 리눅스마스터 1급 공식 출제 기준(새 탭에서 열림)

이 페이지

  • 프로세스 식별과 제어 복습 (Day 1)
  • 프로세스 생애 복습 (Day 2)
  • 시스템 초기화 복습 (Day 3)
  • 작업 예약 복습 (Day 4)
  • 자주 엮이는 시나리오 — 통합 사고
  • 용어
  • 연습 문제