๊ธฐ์กด Linux ๋ช…๋ น์ค„ ๋„๊ตฌ์— ๋Œ€ํ•œ 5๊ฐ€์ง€ ์ตœ์‹  ๋Œ€์•ˆ

๊ธฐ์กด ๋ช…๋ น์ค„ ๋„๊ตฌ์™€ ํ•จ๊ป˜ ๋ณด๋‹ค ํ˜„๋Œ€์ ์ธ ๋Œ€์•ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋งŽ์€ ์ฆ๊ฑฐ์›€์„ ๋ˆ„๋ฆฌ๊ณ  ์ƒ์‚ฐ์„ฑ๋„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด Linux ๋ช…๋ น์ค„ ๋„๊ตฌ์— ๋Œ€ํ•œ 5๊ฐ€์ง€ ์ตœ์‹  ๋Œ€์•ˆ

Linux/Unix์˜ ์ผ์ƒ ์ž‘์—…์—์„œ ์šฐ๋ฆฌ๋Š” ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰๊ณผ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด du์™€ ๊ฐ™์€ ๋งŽ์€ ๋ช…๋ น์ค„ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ ์ค‘ ์ผ๋ถ€๋Š” ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด top์€ 1984๋…„์— ๋“ฑ์žฅํ–ˆ๊ณ  du์˜ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค๋Š” 1971๋…„์œผ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค.

์ˆ˜๋…„์— ๊ฑธ์ณ ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋Š” ํ˜„๋Œ€ํ™”๋˜์–ด ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์œผ๋กœ ์ด์‹๋˜์—ˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „์—์„œ ํฌ๊ฒŒ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์•˜์œผ๋ฉฐ ๋ชจ์–‘๊ณผ ์œ ์šฉ์„ฑ๋„ ํฌ๊ฒŒ ๋ณ€ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๋งŽ์€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž์—๊ฒŒ ํ•„์š”ํ•œ ํ›Œ๋ฅญํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ๋Š” ์ถ”๊ฐ€์ ์ธ ์ด์ ์„ ์ œ๊ณตํ•˜๋Š” ๋Œ€์ฒด ๋„๊ตฌ๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ๋‹จ์ˆœํžˆ ํ˜„๋Œ€์ ์ด๊ณ  ์•„๋ฆ„๋‹ค์šด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฐ˜๋ฉด, ์ผ๋ถ€๋Š” ์œ ์šฉ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด ๋ฒˆ์—ญ์—์„œ๋Š” ํ‘œ์ค€ Linux ๋ช…๋ น์ค„ ๋„๊ตฌ์— ๋Œ€ํ•œ ๋‹ค์„ฏ ๊ฐ€์ง€ ๋Œ€์•ˆ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

1. ncdu ๋Œ€ du

NCurses ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰(NCDU)๋Š” du์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ,curses ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๊ธฐ๋ฐ˜ํ•œ ๋Œ€ํ™”ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ncdu๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

ncdu๋Š” ๋””์Šคํฌ๋ฅผ ๋ถ„์„ํ•œ ํ›„ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋‚˜ ํŒŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ:

ncdu 1.14.2 ~ Use the arrow keys to navigate, press ? for help
--- /home/rgerardi ------------------------------------------------------------
   96.7 GiB [##########] /libvirt
   33.9 GiB [###       ] /.crc
    7.0 GiB [          ] /Projects
.   4.7 GiB [          ] /Downloads
.   3.9 GiB [          ] /.local
    2.5 GiB [          ] /.minishift
    2.4 GiB [          ] /.vagrant.d
.   1.9 GiB [          ] /.config
.   1.8 GiB [          ] /.cache
    1.7 GiB [          ] /Videos
    1.1 GiB [          ] /go
  692.6 MiB [          ] /Documents
. 591.5 MiB [          ] /tmp
  139.2 MiB [          ] /.var
  104.4 MiB [          ] /.oh-my-zsh
   82.0 MiB [          ] /scripts
   55.8 MiB [          ] /.mozilla
   54.6 MiB [          ] /.kube
   41.8 MiB [          ] /.vim
   31.5 MiB [          ] /.ansible
   31.3 MiB [          ] /.gem
   26.5 MiB [          ] /.VIM_UNDO_FILES
   15.3 MiB [          ] /Personal
    2.6 MiB [          ]  .ansible_module_generated
    1.4 MiB [          ] /backgrounds
  944.0 KiB [          ] /Pictures
  644.0 KiB [          ]  .zsh_history
  536.0 KiB [          ] /.ansible_async
 Total disk usage: 159.4 GiB  Apparent size: 280.8 GiB  Items: 561540

ํ™”์‚ดํ‘œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ญ๋ชฉ์„ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Enter๋ฅผ ๋ˆ„๋ฅด๋ฉด ncdu๋Š” ์„ ํƒํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋‚ด์šฉ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

--- /home/rgerardi/libvirt ----------------------------------------------------
                         /..
   91.3 GiB [##########] /images
    5.3 GiB [          ] /media

์˜ˆ๋ฅผ ๋“ค์–ด, ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์žฅ ๋งŽ์€ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋Š” ํŒŒ์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™ผ์ชฝ ํ™”์‚ดํ‘œ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ด์ „ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ncdu์—์„œ๋Š” d ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ํŒŒ์ผ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ญ์ œํ•˜๊ธฐ ์ „์— ํ™•์ธ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ˆ˜๋กœ ์ค‘์š”ํ•œ ํŒŒ์ผ์ด ์†์‹ค๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ญ์ œ ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด -r ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ๊ธฐ ์ „์šฉ ์•ก์„ธ์Šค ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”: ncdu -r.

ncdu๋Š” ๋‹ค์–‘ํ•œ Linux ํ”Œ๋žซํผ ๋ฐ ๋ฐฐํฌํŒ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด dnf๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต์‹ ์ €์žฅ์†Œ์—์„œ Fedora์— ์ง์ ‘ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ sudo dnf install ncdu

2. htop ๋Œ€ ์ƒ๋‹จ

ํ•ซํƒ‘ top๊ณผ ์œ ์‚ฌํ•œ ๋Œ€ํ™”ํ˜• ํ”„๋กœ์„ธ์Šค ๋ทฐ์–ด์ด์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ํ›Œ๋ฅญํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ htop์€ top๊ณผ ๋™์ผํ•œ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜์ง€๋งŒ ๋” ์‹œ๊ฐ์ ์ด๊ณ  ๋‹ค์ฑ„๋กœ์šด ๋ฐฉ์‹์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ htop์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

๊ธฐ์กด Linux ๋ช…๋ น์ค„ ๋„๊ตฌ์— ๋Œ€ํ•œ 5๊ฐ€์ง€ ์ตœ์‹  ๋Œ€์•ˆ
์ƒ๋‹จ๊ณผ ๋‹ฌ๋ฆฌ:

๊ธฐ์กด Linux ๋ช…๋ น์ค„ ๋„๊ตฌ์— ๋Œ€ํ•œ 5๊ฐ€์ง€ ์ตœ์‹  ๋Œ€์•ˆ
๋˜ํ•œ htop์€ ์ƒ๋‹จ์— ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ฐœ์š” ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ํ•˜๋‹จ์—๋Š” ๊ธฐ๋Šฅ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŒจ๋„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. F2 ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ๊ตฌ์„ฑ ํ™”๋ฉด์„ ์—ด์–ด ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์ •์—์„œ ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์ธก์ •ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ ๋˜๋Š” ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๊ฐœ์š” ํŒจ๋„ ํ‘œ์‹œ ์˜ต์…˜์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์‹  ๋ฒ„์ „์˜ top ์„ค์ •์„ ์กฐ์ •ํ•˜์—ฌ ์œ ์‚ฌํ•œ ์œ ์šฉ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ์ง€๋งŒ htop์€ ํŽธ๋ฆฌํ•œ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๋ณด๋‹ค ์‹ค์šฉ์ ์ด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

3. tldr ๋Œ€ ๋‚จ์ž

tldr ๋ช…๋ น์ค„ ๋„๊ตฌ๋Š” ๋ช…๋ น์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๋„์›€๋ง ์ •๋ณด(์ฃผ๋กœ ์˜ˆ์ œ)๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. tldr ํŽ˜์ด์ง€ ํ”„๋กœ์ ํŠธ.

tldr์ด ์ธ๊ฐ„์„ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์—ฌ์ „ํžˆ ํ‘œ์ค€์ ์ด๊ณ  ๊ฐ€์žฅ ํฌ๊ด„์ ์ธ ๋งค๋‰ด์–ผ ํŽ˜์ด์ง€ ์ถœ๋ ฅ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์‚ฌ๋žŒ์ด ๋ถˆํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ๋ช…๋ น์˜ ๊ธฐ๋ณธ ์šฉ๋„๋งŒ ๊ธฐ์–ตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ปฌ ๋ช…๋ น์˜ ๋งค๋‰ด์–ผ ํŽ˜์ด์ง€์—๋Š” ๊ฑฐ์˜ 3000์ค„์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ปฌ์˜ tldr ํŽ˜์ด์ง€ ๊ธธ์ด๋Š” 40์ค„์ž…๋‹ˆ๋‹ค. ๊ทธ ์กฐ๊ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:


$ tldr curl

# curl
  Transfers data from or to a server.
  Supports most protocols, including HTTP, FTP, and POP3.
  More information: <https://curl.haxx.se>.

- Download the contents of an URL to a file:

  curl http://example.com -o filename

- Download a file, saving the output under the filename indicated by the URL:

  curl -O http://example.com/filename

- Download a file, following [L]ocation redirects, and automatically [C]ontinuing (resuming) a previous file transfer:

  curl -O -L -C - http://example.com/filename

- Send form-encoded data (POST request of type `application/x-www-form-urlencoded`):

  curl -d 'name=bob' http://example.com/form                                                                                            
- Send a request with an extra header, using a custom HTTP method:

  curl -H 'X-My-Header: 123' -X PUT http://example.com                                                                                  
- Send data in JSON format, specifying the appropriate content-type header:

  curl -d '{"name":"bob"}' -H 'Content-Type: application/json' http://example.com/users/1234

... TRUNCATED OUTPUT

TLDR์€ โ€œ๋„ˆ๋ฌด ๊ธธ๋‹ค; ์ฝ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค": ์ฆ‰, ๊ณผ๋„ํ•œ ์žฅํ™ฉํ•จ์œผ๋กœ ์ธํ•ด ์ผ๋ถ€ ํ…์ŠคํŠธ๊ฐ€ ๋ฌด์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งค๋‰ด์–ผ ํŽ˜์ด์ง€๊ฐ€ ์œ ์šฉํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๋•Œ๋กœ๋Š” ๋„ˆ๋ฌด ๊ธธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฆ„์€ ์ด ๋„๊ตฌ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

Fedora์˜ ๊ฒฝ์šฐ tldr์€ Python์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. dnf ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋„๊ตฌ๊ฐ€ ์ž‘๋™ํ•˜๋ ค๋ฉด ์ธํ„ฐ๋„ท ์•ก์„ธ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Fedora์˜ Python ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜คํ”„๋ผ์ธ ์•ก์„ธ์Šค๋ฅผ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ํŽ˜์ด์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์บ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.jq ๋Œ€ sed/grep

jq๋Š” ๋ช…๋ น์ค„์šฉ JSON ํ”„๋กœ์„ธ์„œ์ž…๋‹ˆ๋‹ค. sed ๋˜๋Š” grep๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ JSON ๋ฐ์ดํ„ฐ์™€ ์ž‘๋™ํ•˜๋„๋ก ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ์ƒ์ ์ธ ์ž‘์—…์—์„œ JSON์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž ๋˜๋Š” ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๋ผ๋ฉด ์ด ๋„๊ตฌ๊ฐ€ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

grep ๋ฐ sed์™€ ๊ฐ™์€ ํ‘œ์ค€ ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ ๋„๊ตฌ์— ๋น„ํ•ด jq์˜ ์ฃผ์š” ์žฅ์ ์€ JSON ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜์—ฌ ๋‹จ์ผ ํ‘œํ˜„์‹์œผ๋กœ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ JSON ํŒŒ์ผ์—์„œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ์ฐพ์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

{
  "apiVersion": "v1",
  "kind": "Pod",
  "metadata": {
    "labels": {
      "app": "myapp"
    },
    "name": "myapp",
    "namespace": "project1"
  },
  "spec": {
    "containers": [
      {
        "command": [
          "sleep",
          "3000"
        ],
        "image": "busybox",
        "imagePullPolicy": "IfNotPresent",
        "name": "busybox"
      },
      {
        "name": "nginx",
        "image": "nginx",
        "resources": {},
        "imagePullPolicy": "IfNotPresent"
      }
    ],
    "restartPolicy": "Never"
  }
}

๋ฌธ์ž์—ด ์ด๋ฆ„์„ ์ฐพ์œผ๋ ค๋ฉด grep์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

$ grep name k8s-pod.json
        "name": "myapp",
        "namespace": "project1"
                "name": "busybox"
                "name": "nginx",

grep์€ name์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“  ์ค„์„ ๋ฐ˜ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. grep์— ๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ œํ•œํ•˜๊ณ  ์ •๊ทœ์‹ ์กฐ์ž‘์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

jq๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค.

$ jq '.spec.containers[].name' k8s-pod.json
"busybox"
"nginx"

์ด ๋ช…๋ น์€ ๋‘ ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„๋งŒ ์ฐพ๋Š” ๊ฒฝ์šฐ ๋ฐฐ์—ด ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ํ‘œํ˜„์‹์— ์ถ”๊ฐ€ํ•˜์„ธ์š”.

$ jq '.spec.containers[1].name' k8s-pod.json
"nginx"

jq๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ํŒŒ์ผ ํ˜•์‹์ด ์•ฝ๊ฐ„ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ grep ๋ฐ sed๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

jq์—๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์žˆ์ง€๋งŒ ์ด๋ฅผ ์„ค๋ช…ํ•˜๋ ค๋ฉด ๋‹ค๋ฅธ ๋ฌธ์„œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์›ํ•˜์‹œ๋ฉด ์—ฐ๋ฝ์ฃผ์„ธ์š” ์ŠคํŠธ๋ž˜๋‹ˆ์ฒด ํ”„๋กœํ…ํ„ฐ jq ๋˜๋Š” tldr.

5. fd ๋Œ€ ์ฐพ๊ธฐ

fd find ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ๋Œ€ํ•œ ๋‹จ์ˆœํ™”๋œ ๋Œ€์•ˆ์ž…๋‹ˆ๋‹ค. Fd๋Š” ์ด๋ฅผ ์™„์ „ํžˆ ๋Œ€์ฒดํ•  ์˜๋„๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์„ค์ •์ด ์„ค์น˜๋˜์–ด ํŒŒ์ผ ์ž‘์—…์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Git ์ €์žฅ์†Œ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•  ๋•Œ fd๋Š” .git ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํฌํ•จํ•œ ์ˆจ๊ฒจ์ง„ ํŒŒ์ผ๊ณผ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ์ œ์™ธํ•˜๊ณ  .gitignore ํŒŒ์ผ์˜ ์™€์ผ๋“œ์นด๋“œ๋„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ์ „๋ฐ˜์ ์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ์‹œ๋„์—์„œ ๋” ๊ด€๋ จ์„ฑ์ด ๋†’์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ fd๋Š” ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ์ƒ‰์ƒ ์ถœ๋ ฅ์œผ๋กœ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. find ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋ช…๋ น์ค„์— ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๋ชจ๋“  .md(๋˜๋Š” .MD) ํŒŒ์ผ์„ ์ฐพ์œผ๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ find ๋ช…๋ น์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

$ find . -iname "*.md"

fd์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$ fd .md

๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” fd์— ์ถ”๊ฐ€ ์˜ต์…˜๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆจ๊ฒจ์ง„ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๋ ค๋ฉด -H ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ๋•Œ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

fd๋Š” ๋งŽ์€ Linux ๋ฐฐํฌํŒ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Fedora์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ sudo dnf install fd-find

์•„๋ฌด๊ฒƒ๋„ ํฌ๊ธฐํ•  ํ•„์š”๊ฐ€ ์—†์–ด์š”

์ƒˆ๋กœ์šด Linux ๋ช…๋ น์ค„ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์˜ค๋ž˜๋œ ๊ฒƒ์—๋งŒ ์•‰์•„ ์žˆ์Šต๋‹ˆ๊นŒ? ํ•˜์ง€๋งŒ ์•„๋งˆ๋„ ๋‹น์‹ ์€ ์ฝค๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ฃ ? ๋Œ“๊ธ€๋กœ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•ด์ฃผ์„ธ์š”.

๊ด‘๊ณ ์˜ ๊ถŒ๋ฆฌ์—

๋งŽ์€ ๊ณ ๊ฐ๋“ค์ด ์ด๋ฏธ ์ด์ ์„ ๋†’์ด ํ‰๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ํ”ฝ ์„œ๋ฒ„!
๊ทธ๊ฒƒ AMD EPYC ํ”„๋กœ์„ธ์„œ๋ฅผ ํƒ‘์žฌํ•œ ๊ฐ€์ƒ ์„œ๋ฒ„, CPU ์ฝ”์–ด ์ฃผํŒŒ์ˆ˜๋Š” ์ตœ๋Œ€ 3.4GHz์ž…๋‹ˆ๋‹ค. ์ตœ๋Œ€ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด 128๊ฐœ CPU ์ฝ”์–ด, 512GB RAM, 4000GB NVMe ๋“ฑ ํญ๋ฐœ์ ์ธ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋‘˜๋Ÿฌ ์ฃผ๋ฌธํ•˜์„ธ์š”!

๊ธฐ์กด Linux ๋ช…๋ น์ค„ ๋„๊ตฌ์— ๋Œ€ํ•œ 5๊ฐ€์ง€ ์ตœ์‹  ๋Œ€์•ˆ

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€