CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
  • Week 1
    • 1.운영체제와 커널: 리눅스가 하는 일
    • 2.리눅스의 탄생: 유닉스에서 리누스까지
    • 3.자유 소프트웨어와 오픈소스: 라이선스가 정하는 것
    • 4.배포판: 커널과 도구를 하나로 묶어 파는 단위
    • 5.Week 1 종합 복습: 리눅스라는 이름의 정체
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
    • 1.vi 편집기의 세 가지 모드
    • 2.vi 검색·치환과 다른 편집기
    • 3.프로세스의 개념과 유형
    • 4.프로세스 명령과 작업 예약
    • 5.Week 6 종합 복습: 에디터와 프로세스
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
리눅스마스터 1급 · 1급리눅스마스터 1급
합격 후기

© CertNote · 주간랩스

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

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

리눅스마스터 2급· AssociateWeek 6 · Day 5읽기 약 7분
핵심 정리
  • vi만 모드가 있다. 명령 → i → 입력, ESC → 명령, : → ex.
  • :%s/A/B/g — %는 파일 전체, g는 줄 안의 전부.
  • ps는 한 장면, top은 실시간. ps -ef(System V) / ps aux(BSD).
  • 시그널 9는 강제, 15는 기본. nice는 -20이 가장 높다.
  • cron은 반복(5필드), at은 한 번.

Day 5 - Week 6 종합 복습: 에디터와 프로세스

요점 도식

   에디터
     라인 에디터    ed · ex · sed
     스크린 에디터   vi(Bill Joy) · emacs(Stallman) · nano(pico 개선)
     모드가 있는 건 vi 뿐
 
     vi 모드     명령 ──i a o──► 입력 ──ESC──► 명령 ──:──► ex
     저장/종료   :w  :q  :wq  :q!(강제)  ZZ
     치환        :%s/A/B/g        % 전체 · g 줄 안 전부
     설정        ~/.vimrc (개인) · /etc/vimrc (전역)
 
   프로세스
     PID 1       init → systemd     모든 프로세스의 조상
     고아        부모가 먼저 죽음 → PID 1 이 입양
     좀비(Z)     끝났는데 부모가 안 거둠 → 부모를 정리해야 사라짐
 
     포그라운드 ──Ctrl+Z──► 정지 ──bg──► 백그라운드
          ▲                                  │
          └──────────── fg ──────────────────┘
 
     시그널      1 HUP · 2 INT(Ctrl+C) · 9 KILL(강제) · 15 TERM(기본)
     우선순위    -20 ◄─ 높음 ── 0 ── 낮음 ─► 19
 
   예약
     cron  반복   분 시 일 월 요일   crontab -e
     at    한 번  at 22:00

장면으로 다시 보기

vi — 설정 파일 한 줄 고치기

키를 누를 때마다 지금 어느 모드인지를 따라가 본다.

   누르는 것              일어나는 일                              모드
   ─────────────────────────────────────────────────────────────────────
   vi /etc/hosts          파일이 열린다                            명령
   /server1  Enter        server1 이 있는 줄로 이동                명령
   A                      그 줄 끝으로 가서 입력 시작              입력
    web1                  글자가 들어간다                          입력
   ESC                    입력을 마친다                            명령
   yy  p                  그 줄을 복사해 아래에 붙인다             명령
   :s/web1/web2/  Enter   붙인 줄의 web1 을 web2 로               ex → 명령
   :set nu  Enter         줄 번호를 켜서 확인                      ex → 명령
   :wq  Enter             저장하고 종료                            ex
  • 입력 모드에 머무는 구간은 A부터 ESC까지뿐이다. 나머지는 전부 명령 모드에서 시작한다.
  • p 다음에는 커서가 붙여 넣은 새 줄에 있다. 그래서 범위 없는 :s가 그 줄만 바꾼다.
  • 검색(/)과 ex 명령(:)은 둘 다 화면 맨 아랫줄에 입력되고, 엔터를 치면 명령 모드로 돌아온다.

프로세스 — 응답 없는 프로그램 정리하기

ps -ef | grep myapp          # ① PID 와 PPID 를 확인한다
# user     3100    2314  5 10:10 pts/0    00:05:12 ./myapp
kill 3100                    # ② 먼저 15번(TERM) — 정리할 기회를 준다
ps -p 3100                   # ③ 아직 남아 있는지 본다
kill -9 3100                 # ④ 남아 있으면 9번(KILL)
  • 15번을 먼저, 안 되면 9번이다. 처음부터 9번을 쓰면 저장 중이던 데이터가 깨질 수 있다.
  • ①에서 상태가 Z(<defunct>)였다면 ②와 ④는 소용없다. PPID(여기서는 2314) 쪽을 봐야 한다.
  • 이름으로 한꺼번에 끝내려면 killall myapp, 멈추지 말고 양보만 시키려면 renice 10 -p 3100 이다.

crontab 읽기 연습

설정뜻
0 3 * * *매일 3시 정각
30 3 * * 1매주 월요일 3시 30분
0 */2 * * *2시간마다 정각
*/15 * * * *15분마다
0 9 * * 1-5평일 9시
0 3,15 * * *3시와 15시
0 0 1 * *매월 1일 자정
0 0 1 1 *1월 1일 자정
* 3 * * *3시대 매분 — "3시에 한 번"이 아니다
  • 왼쪽부터 분·시·일·월·요일을 한 칸씩 짚는다. 숫자가 있는 칸은 "그때만", *는 "매번"이다.
  • 분 자리가 *인지 0인지를 가장 먼저 본다. 함정이 대부분 여기에 있다.

이럴 땐 어떤 명령

하고 싶은 일명령
전체 프로세스를 한 번 보기ps -ef 또는 ps aux
CPU를 많이 쓰는 것을 실시간으로top
부모-자식 관계를 트리로pstree
이름으로 PID 찾기pgrep
지금 셸의 백그라운드 작업 보기jobs
PID로 종료 / 이름으로 종료kill / killall
낮은 우선순위로 시작nice -n 10 명령
실행 중인 것의 우선순위 변경renice 10 -p PID
로그아웃해도 계속 실행nohup 명령 &
멈춘 작업을 뒤에서 / 앞에서 재개bg / fg
주기적으로 반복 실행crontab -e
지정한 시각에 한 번만at 시각
예약 목록 / 예약 취소 (at)atq / atrm
예약 목록 / 전부 삭제 (cron)crontab -l / crontab -r

헷갈리는 짝 대조

구분AB가르는 기준
라인 vs 스크린 에디터ed·exvi·emacs·nano다루는 단위
vi vs emacsBill JoyRichard Stallman만든 사람
vi vs nano모드 있음모드 없음실행 직후 입력 가능한가
i vs a커서 앞커서 뒤삽입 위치
o vs O아래 새 줄위 새 줄대소문자
dd vs yy잘라내기복사원본이 남나
:q vs :q!변경 있으면 거부강제 종료느낌표
% vs g파일 전체줄 안의 전부범위 vs 개수
ps vs top한 번 출력실시간 갱신갱신 여부
ps -ef vs ps auxSystem VBSD(하이픈 없음)표기 방식
9 vs 15강제, 무시 불가정상 종료 요청(기본)마무리 기회
Ctrl+Z vs Ctrl+C정지종료되살릴 수 있나
고아 vs 좀비부모가 죽음자식이 죽음누가 먼저 죽었나
cron vs at반복한 번실행 횟수
standalone vs inetd상주, 빠름필요할 때, 메모리 절약대기 방식

자주 틀리는 지점

  1. vi를 열면 바로 입력된다 → 아니다. 명령 모드로 시작한다.
  2. :q로 언제나 나갈 수 있다 → 수정했다면 거부된다. :q! 를 쓴다.
  3. :s/A/B/가 전체를 바꾼다 → 그 줄의 첫 번째만 바꾼다. 전체는 :%s/A/B/g.
  4. emacs와 nano도 모드가 있다 → 없다. 모드가 있는 건 vi 계열뿐이다.
  5. ps -aux → BSD 방식은 하이픈 없이 ps aux 다.
  6. kill의 기본이 9번 → 15번(TERM) 이다. 9는 명시해야 한다.
  7. 좀비를 kill -9로 죽인다 → 이미 죽어 있어 소용없다. 부모를 정리해야 한다.
  8. nice 값이 클수록 우선순위가 높다 → 반대다. -20이 가장 높다.
  9. crontab 첫 필드가 시(hour) → 분이다. 순서는 분·시·일·월·요일.
  10. at이 반복 실행한다 → 한 번만이다. 반복은 cron이다.
  11. ZZ는 ex 모드 명령이다 → 콜론 없이 명령 모드에서 누른다.
  12. N은 항상 위로 찾는다 → 처음 검색한 방향의 반대다. ?로 찾았다면 아래로 간다.
  13. r을 누르면 입력 모드가 된다 → 한 글자만 바꾸고 명령 모드에 남는다.
  14. Ctrl+Z로 프로그램이 끝났다 → 정지했을 뿐이다. jobs에 Stopped로 남아 있다.
  15. nohup만 붙이면 백그라운드로 간다 → 아니다. &를 함께 써야 한다.
  16. nice와 renice의 숫자는 같은 뜻이다 → nice는 더할 양, renice는 값 그 자체다.
  17. killall에 PID를 준다 → 프로세스 이름을 준다. PID는 kill이다.
  18. crontab -r은 한 줄을 지운다 → 전부 지운다. 한 줄만 지우려면 -e로 열어 고친다.
  19. 고아 프로세스는 죽은 프로세스다 → 살아서 실행 중이다. 죽은 쪽은 좀비다.
  20. disable = no는 서비스를 끈다 → 반대다. 사용한다는 뜻이다.

시험에 그대로 나오는 값

값무엇
3vi 의 모드 개수
1 / 2 / 9 / 15SIGHUP / SIGINT / SIGKILL / SIGTERM
15kill의 기본 시그널
-20 ~ 19nice 값의 범위 (기본 0)
5crontab 의 필드 개수
0 과 7crontab 요일 필드에서 일요일
1init / systemd 의 PID
Zps 에서 좀비 상태 표시
사람만든 것
Bill Joyvi, csh
Richard Stallmanemacs, GNU

파일 한눈에

파일한 줄 역할
~/.vimrcvim 개인 설정
/etc/vimrcvim 전역 설정 (데비안 계열은 /etc/vim/vimrc)
/etc/crontab시스템 crontab — 시각 뒤에 사용자 칸이 하나 더 있다
/var/spool/cron/사용자별 crontab이 저장되는 곳
/etc/cron.allow · /etc/cron.denycron 사용 허가 / 금지
/etc/at.allow · /etc/at.denyat 사용 허가 / 금지
/etc/xinetd.d/xinetd가 맡는 서비스별 설정 파일
nohup.outnohup으로 실행한 명령의 출력이 쌓이는 파일

저장·종료 키 한눈에

편집기저장종료저장 없이 종료
vi:w:q:q!
emacsCtrl+X Ctrl+SCtrl+X Ctrl+C종료할 때 저장 여부에 아니오
nanoCtrl+OCtrl+XCtrl+X 다음 N

다음 주는 소프트웨어와 장치다. RPM·YUM·DEB·APT 같은 패키지 관리와 프린터·사운드·스캐너를 다룬다.

📖 용어

  • 모드 : vi가 입력과 명령을 구분하는 상태. 명령·입력·ex 세 가지다.
  • 좀비 프로세스 : 종료되었으나 부모가 거두지 않아 목록에 남은 프로세스.
  • 시그널 : 프로세스에 보내는 신호. kill로 전달하며 기본은 15번이다.
  • nice 값 : 프로세스 우선순위. 작을수록 높고 범위는 -20에서 19까지다.
  • cron / at : 반복 예약 / 일회성 예약 도구.
  • standalone / inetd : 데몬을 상주시키는 방식 / 요청 시 띄우는 방식.

📝 연습 문제

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

문제 1

다음 중 vi 편집기에서 커서가 있는 줄을 복사하는 명령으로 알맞은 것은?

문제 2

다음 중 kill 명령을 시그널 번호 없이 사용했을 때 기본으로 전달되는 시그널로 알맞은 것은?

문제 3

다음 중 부모 프로세스가 먼저 종료되어 PID 1번 프로세스에 입양되는 프로세스로 알맞은 것은?

문제 4

다음 중 매일 새벽 3시에 작업을 실행하도록 하는 crontab 설정으로 알맞은 것은?

문제 5

다음 중 편집 모드의 구분을 가지고 있는 편집기로 알맞은 것은?

문제 6

다음 중 프로세스의 CPU와 메모리 사용률까지 함께 보여 주는 BSD 방식의 ps 명령 표기로 알맞은 것은?

이전프로세스 명령과 작업 예약Week 6 · Day 4다음 패키지 관리 (1): RPM과 YUMWeek 7 · Day 1

참고 공식 자료

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

이 페이지

  • 요점 도식
  • 장면으로 다시 보기
  • vi — 설정 파일 한 줄 고치기
  • 프로세스 — 응답 없는 프로그램 정리하기
  • crontab 읽기 연습
  • 이럴 땐 어떤 명령
  • 헷갈리는 짝 대조
  • 자주 틀리는 지점
  • 시험에 그대로 나오는 값
  • 파일 한눈에
  • 저장·종료 키 한눈에
  • 용어
  • 연습 문제