Linux์ โEverything is a Fileโ ์ฒ ํ์ ์๋ฒฝํ ์ดํด
ํ์ํ ๋ฐฐ๊ฒฝ ์ง์
Linux๋ฅผ ์ดํดํ๊ธฐ ์ํด ๋ค์ ๊ธฐ๋ณธ ๊ฐ๋ ๋ค์ ์๊ณ ์์ด์ผ ํ๋ค:
- ๊ธฐ๋ณธ์ ์ธ ํ์ผ ์์คํ ๊ตฌ์กฐ (/bin, /etc, /dev ๋ฑ)
- ๊ธฐ๋ณธ Linux ๋ช ๋ น์ด (ls, cat, echo ๋ฑ)
- ํ์ผ ๊ถํ ๊ฐ๋ (read, write, execute)
- ํ๋ก์ธ์ค์ ํ๋ก๊ทธ๋จ์ ์ฐจ์ด
- File descriptor์ ๊ธฐ๋ณธ ๊ฐ๋
๊ฐ๋ ์ค๋ช
โEverything is a Fileโ ์ ์
Linux์์ โ๋ชจ๋ ๊ฒ์ด ํ์ผ์ด๋คโ๋ผ๋ ์ฒ ํ์ ๋ชจ๋ ์์คํ ๋ฆฌ์์ค๋ฅผ ํ์ผ์ด๋ผ๋ ๋จ์ผ ์ถ์ํ๋ก ํํํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ค์ํ ๋น์ : ํธํ ์ด์ ์์คํ
ํ๋์ ์ธ ํธํ ์ด์ ์์คํ ์ ํตํด Linux์ ํ์ผ ์์คํ ์ ์ดํดํด๋ณด์:
-
๋ฌธ์ ๊ด๋ฆฌ (์ผ๋ฐ ํ์ผ)
- ๊ณ ๊ฐ ๋ช ๋จ = ํ ์คํธ ํ์ผ
- ์์ฝ ๊ธฐ๋ก = ๋ก๊ทธ ํ์ผ
- ์ง์ ๋งค๋ด์ผ = ์คํ ํ์ผ
-
์์ค ๊ด๋ฆฌ (์ฅ์น ํ์ผ)
- ๊ฐ์ค ํค ์์คํ = ๋ธ๋ก ์ฅ์น
- ์ธํฐ์ปด = ๋ฌธ์ ์ฅ์น
- ์๋ฆฌ๋ฒ ์ดํฐ = ํ๋์จ์ด ์ธํฐํ์ด์ค
-
์กฐ์ง ๊ตฌ์กฐ (๋๋ ํ ๋ฆฌ)
- ๋ถ์๋ณ ๊ตฌ๋ถ = ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ
- ์ง์ ์ฒด๊ณ = ํ์ผ ๊ถํ ์์คํ
-
ํต์ ์์คํ (ํ์ดํ์ ์์ผ)
- ๋ด์ ์ ํ = ํ์ดํ
- ์ธ๋ถ ์ ํ = ๋คํธ์ํฌ ์์ผ
๊ธฐ๋ณธ ๋์ ๋ฐฉ์
ํ์ผ ์ข ๋ฅ๋ณ ํน์ง
graph TD A[Linux ํ์ผ ์์คํ ] --> B[์ผ๋ฐ ํ์ผ] A --> C[๋๋ ํ ๋ฆฌ] A --> D[ํน์ ํ์ผ] A --> E[๋งํฌ] D --> F[์ฅ์น ํ์ผ] D --> G[ํ๋ก์ธ์ค ํ์ผ] F --> H[๋ธ๋ก ์ฅ์น] F --> I[๋ฌธ์ ์ฅ์น] E --> J[์ฌ๋ณผ๋ฆญ ๋งํฌ] E --> K[ํ๋ ๋งํฌ]
์์คํ ๊ตฌ์ฑ์์์ ํ์ผ์ ๋งคํ
๊ฐ ์์คํ ๋ฆฌ์์ค๊ฐ ์ด๋ป๊ฒ ํ์ผ๋ก ํํ๋๋์ง ์ดํด๋ณด์:
- ํ๋์จ์ด ๋ฆฌ์์ค
# ํ๋๋์คํฌ ์ ๊ทผ
ls -l /dev/sda # ๋์คํฌ ์ฅ์น ํ์ผ ํ์ธ
# ์ถ๋ ฅ: brw-rw---- 1 root disk 8, 0 Jan 1 00:00 /dev/sda
# ํ๋ฆฐํฐ ์ ๊ทผ
ls -l /dev/lp0 # ํ๋ฆฐํฐ ์ฅ์น ํ์ผ ํ์ธ
# ์ถ๋ ฅ: crw-rw---- 1 root lp 6, 0 Jan 1 00:00 /dev/lp0- ํ๋ก์ธ์ค ์ ๋ณด
# PID 1์ ์ํ ์ ๋ณด ํ์ธ
cat /proc/1/status
# ์ถ๋ ฅ: Name: systemd
# State: S (sleeping)
# Pid: 1
# ...์ค์ ์ฌ์ฉ ์์
1. ์๋ชป๋ ์ ๊ทผ ๋ฐฉ์
# ์์ข์ ์์ : ์ง์ ์ ์ธ ๋๋ฐ์ด์ค ์ ๊ทผ
dd if=/dev/sda of=disk.img # ๊ถํ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ
# ์์ข์ ์์ : ํ๋ก์ธ์ค ์ง์ ์ ์ด
echo "9" > /proc/1234/oom_adj # ์์คํ
๋ถ์์ ์ฑ ์ ๋ฐ ๊ฐ๋ฅ2. ์ฌ๋ฐ๋ฅธ ์ ๊ทผ ๋ฐฉ์
# ์ข์ ์์ : ์ ์ ํ ๊ถํ๊ณผ ๋๊ตฌ ์ฌ์ฉ
sudo dd if=/dev/sda of=disk.img bs=4M status=progress
# ์ถ๋ ฅ: 1048576 bytes (1.0 MB) copied, 0.001773 s, 591 MB/s
# ์ข์ ์์ : ์์คํ
๋๊ตฌ ํ์ฉ
sudo renice +1 1234 # ํ๋ก์ธ์ค ์ฐ์ ์์ ์กฐ์
# ์ถ๋ ฅ: 1234 (process ID) old priority 0, new priority 1๊ณ ๊ธ ํ์ฉ๋ฒ
Performance ์ต์ ํ
# ํ์ผ ์์คํ
์บ์ ํ์ฉ
dd if=/dev/zero of=test.file bs=1M count=1024 conv=fdatasync
# ๋์คํฌ ์ฐ๊ธฐ ์ฑ๋ฅ ์ธก์
# ๋ฒํผ ํฌ๊ธฐ ์ต์ ํ
dd if=/dev/zero of=test.file bs=4M count=256 conv=fdatasync
# ๋ ํฐ ๋ฒํผ๋ก ์ฑ๋ฅ ํฅ์Security ๊ฐํ
# ํ์ผ ๊ถํ ์ ์ ํ ์ค์
chmod 600 /etc/sensitive.conf # ์์ ์๋ง ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ฐ๋ฅ
chmod 755 /usr/local/bin/script.sh # ์คํ ๊ถํ ๋ถ์ฌ์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์ ์ ํด๊ฒฐ๋ฐฉ์
1. ์ฅ์น ํ์ผ ์ ๊ทผ ๊ถํ ๋ฌธ์
์ฆ์:
$ cat /dev/sda
cat: /dev/sda: Permission denied์์ธ๊ณผ ํด๊ฒฐ:
# ์์ธ ํ์ธ
ls -l /dev/sda
# ์ถ๋ ฅ: brw-rw---- 1 root disk 8, 0 Jan 1 00:00 /dev/sda
# ํด๊ฒฐ๋ฐฉ๋ฒ 1: ๊ทธ๋ฃน ๋ฉค๋ฒ์ญ ์ถ๊ฐ
sudo usermod -a -G disk $USER
# ํด๊ฒฐ๋ฐฉ๋ฒ 2: ์ผ์์ ๊ถํ ๋ถ์ฌ
sudo dd if=/dev/sda of=backup.img bs=4M2. ํ๋ก์ธ์ค ํ์ผ์์คํ ์ ๊ทผ ์ค๋ฅ
์ฆ์:
$ echo 1 > /proc/sys/net/ipv4/ip_forward
-bash: /proc/sys/net/ipv4/ip_forward: Permission deniedํด๊ฒฐ:
# ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ: sysctl ์ฌ์ฉ
sudo sysctl -w net.ipv4.ip_forward=1
# ์ถ๋ ฅ: net.ipv4.ip_forward = 1์ฃผ์์ฌํญ
์์คํ ์์ ์ฑ
- ์์คํ ํ์ผ ์์ ์ ๋ฐฑ์ ํ์
- ๊ถํ ๋ณ๊ฒฝ ์ ๋ณด์ ์ํฅ ๊ณ ๋ ค
- ๋์ฉ๋ I/O ์์ ์ ์์คํ ๋ถํ ์ฃผ์
๋ฐ์ดํฐ ์ ํฉ์ฑ
- ํ์ผ ๋์ ์ ๊ทผ ์ ๋ฝ(lock) ๋ฉ์ปค๋์ฆ ์ฌ์ฉ
- ์ค์ ๋ฐ์ดํฐ ์์ ์ ํธ๋์ญ์ ๊ณ ๋ ค
- ์์ ํ์ผ ์ ์ ํ ๊ด๋ฆฌ
๊ฒฐ๋ก
Linux์ โEverything is a Fileโ ์ฒ ํ์ ๋จ์ํ๋ฉด์๋ ๊ฐ๋ ฅํ ์์คํ ๋์์ธ ์์น์ด๋ค. ์ด๋ฅผ ํตํด:
- ์ผ๊ด๋ ์ธํฐํ์ด์ค๋ก ๋ชจ๋ ๋ฆฌ์์ค ์ ๊ทผ
- ํ์ค ๋๊ตฌ๋ก ๋ค์ํ ์์ ์ํ
- ์คํฌ๋ฆฝํธ ์์ฑ๊ณผ ์๋ํ ์ฉ์ด
- ์์คํ ๊ด๋ฆฌ์ ๋ชจ๋ํฐ๋ง ๋จ์ํ
์ด๋ฌํ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ๋ฉด์๋ ์ ์ ํ ์ฃผ์์ฌํญ์ ์ง์ผ ์์ ์ ์ธ ์์คํ ์ด์์ด ๊ฐ๋ฅํ๋ค.