- 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은 한 번.
기준: 리눅스마스터 2급 출제 기준오류 제보
i → 입력, ESC → 명령, : → ex.:%s/A/B/g — %는 파일 전체, g는 줄 안의 전부.ps는 한 장면, top은 실시간. ps -ef(System V) / ps aux(BSD). 에디터
라인 에디터 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 /etc/hosts 파일이 열린다 명령
/server1 Enter server1 이 있는 줄로 이동 명령
A 그 줄 끝으로 가서 입력 시작 입력
web1 글자가 들어간다 입력
ESC 입력을 마친다 명령
yy p 그 줄을 복사해 아래에 붙인다 명령
:s/web1/web2/ Enter 붙인 줄의 web1 을 web2 로 ex → 명령
:set nu Enter 줄 번호를 켜서 확인 ex → 명령
:wq Enter 저장하고 종료 exA부터 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)Z(<defunct>)였다면 ②와 ④는 소용없다. PPID(여기서는 2314) 쪽을 봐야 한다.killall myapp, 멈추지 말고 양보만 시키려면 renice 10 -p 3100 이다.| 설정 | 뜻 |
|---|---|
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 |
| 구분 | A | B | 가르는 기준 |
|---|---|---|---|
| 라인 vs 스크린 에디터 | ed·ex | vi·emacs·nano | 다루는 단위 |
| vi vs emacs | Bill Joy | Richard 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 aux | System V | BSD(하이픈 없음) | 표기 방식 |
| 9 vs 15 | 강제, 무시 불가 | 정상 종료 요청(기본) | 마무리 기회 |
Ctrl+Z vs Ctrl+C | 정지 | 종료 | 되살릴 수 있나 |
| 고아 vs 좀비 | 부모가 죽음 | 자식이 죽음 | 누가 먼저 죽었나 |
| cron vs at | 반복 | 한 번 | 실행 횟수 |
| standalone vs inetd | 상주, 빠름 | 필요할 때, 메모리 절약 | 대기 방식 |
:q로 언제나 나갈 수 있다 → 수정했다면 거부된다. :q! 를 쓴다.:s/A/B/가 전체를 바꾼다 → 그 줄의 첫 번째만 바꾼다. 전체는 :%s/A/B/g.ps -aux → BSD 방식은 하이픈 없이 ps aux 다.kill의 기본이 9번 → 15번(TERM) 이다. 9는 명시해야 한다.kill -9로 죽인다 → 이미 죽어 있어 소용없다. 부모를 정리해야 한다.at이 반복 실행한다 → 한 번만이다. 반복은 cron이다.ZZ는 ex 모드 명령이다 → 콜론 없이 명령 모드에서 누른다.N은 항상 위로 찾는다 → 처음 검색한 방향의 반대다. ?로 찾았다면 아래로 간다.r을 누르면 입력 모드가 된다 → 한 글자만 바꾸고 명령 모드에 남는다.Ctrl+Z로 프로그램이 끝났다 → 정지했을 뿐이다. jobs에 Stopped로 남아 있다.nohup만 붙이면 백그라운드로 간다 → 아니다. &를 함께 써야 한다.nice와 renice의 숫자는 같은 뜻이다 → nice는 더할 양, renice는 값 그 자체다.killall에 PID를 준다 → 프로세스 이름을 준다. PID는 kill이다.crontab -r은 한 줄을 지운다 → 전부 지운다. 한 줄만 지우려면 -e로 열어 고친다.disable = no는 서비스를 끈다 → 반대다. 사용한다는 뜻이다.| 값 | 무엇 |
|---|---|
| 3 | vi 의 모드 개수 |
| 1 / 2 / 9 / 15 | SIGHUP / SIGINT / SIGKILL / SIGTERM |
| 15 | kill의 기본 시그널 |
| -20 ~ 19 | nice 값의 범위 (기본 0) |
| 5 | crontab 의 필드 개수 |
| 0 과 7 | crontab 요일 필드에서 일요일 |
| 1 | init / systemd 의 PID |
Z | ps 에서 좀비 상태 표시 |
| 사람 | 만든 것 |
|---|---|
| Bill Joy | vi, csh |
| Richard Stallman | emacs, GNU |
| 파일 | 한 줄 역할 |
|---|---|
~/.vimrc | vim 개인 설정 |
/etc/vimrc | vim 전역 설정 (데비안 계열은 /etc/vim/vimrc) |
/etc/crontab | 시스템 crontab — 시각 뒤에 사용자 칸이 하나 더 있다 |
/var/spool/cron/ | 사용자별 crontab이 저장되는 곳 |
/etc/cron.allow · /etc/cron.deny | cron 사용 허가 / 금지 |
/etc/at.allow · /etc/at.deny | at 사용 허가 / 금지 |
/etc/xinetd.d/ | xinetd가 맡는 서비스별 설정 파일 |
nohup.out | nohup으로 실행한 명령의 출력이 쌓이는 파일 |
| 편집기 | 저장 | 종료 | 저장 없이 종료 |
|---|---|---|---|
| vi | :w | :q | :q! |
| emacs | Ctrl+X Ctrl+S | Ctrl+X Ctrl+C | 종료할 때 저장 여부에 아니오 |
| nano | Ctrl+O | Ctrl+X | Ctrl+X 다음 N |
다음 주는 소프트웨어와 장치다. RPM·YUM·DEB·APT 같은 패키지 관리와 프린터·사운드·스캐너를 다룬다.
kill로 전달하며 기본은 15번이다.선택지를 클릭하면 정답·해설이 펼쳐집니다.
문제 1
다음 중 vi 편집기에서 커서가 있는 줄을 복사하는 명령으로 알맞은 것은?
문제 2
다음 중 kill 명령을 시그널 번호 없이 사용했을 때 기본으로 전달되는 시그널로 알맞은 것은?
문제 3
다음 중 부모 프로세스가 먼저 종료되어 PID 1번 프로세스에 입양되는 프로세스로 알맞은 것은?
문제 4
다음 중 매일 새벽 3시에 작업을 실행하도록 하는 crontab 설정으로 알맞은 것은?
문제 5
다음 중 편집 모드의 구분을 가지고 있는 편집기로 알맞은 것은?
문제 6
다음 중 프로세스의 CPU와 메모리 사용률까지 함께 보여 주는 BSD 방식의 ps 명령 표기로 알맞은 것은?