Linux Command Shell ์ ํ๋ก์ธ์ค ์์ฑ ๊ณผ์
๋ฆฌ๋ ์ค ์ปค๋งจ๋ ์ ธ(Command Shell)์ ํ๋ก์ธ์ค ์์ฑ ๊ณผ์
์ ์ ๊ฐ bash์ ๊ฐ์ ์ปค๋งจ๋ ์ ธ ์ธํฐํ๋ฆฌํฐ์์ ๋ช ๋ น์ ์คํํ๋ฉด ์๋์ ๊ฐ์ ๊ณผ์ ์ด ๋ฐ์ํ๋ค
์ ์ ๊ฐ ํน์ ๋ช
๋ น์ ์คํํ๋ฉด, ํ์ฌ ์ ์ ์ ๋ก๊ทธ์ธ ์
ธ์์ `fork` ์์คํ
์ฝ์ ์ฌ์ฉํ์ฌ ์ ํ๋ก์ธ์ค ์์ฑ
- ์๋ก์ด ํ๋ก์ธ์ค๋ Parent ํ๋ก์ธ์ค(์
ธ)์ ๋ณต์ ์ด๋ฏ๋ก ๋์ผํ ์ฝ๋๋ฅผ ๊ฐ์ง๊ฒ ๋จ
Parent ํ๋ก์ธ์ค(์ ธ)์์๋ `Wait` ์์คํ ์ฝ์ ์ฌ์ฉํ์ฌ Child ํ๋ก์ธ์ค์ ์ข ๋ฃ๋ฅผ ๋๊ธฐํจ(`Sleep`)
Child ํ๋ก์ธ์ค์์ `exec` ์์คํ
์ฝ์ ํตํด Child ํ๋ก์ธ์ค ๊ณต๊ฐ์ ๋ช
๋ น์ด ๋ก๋๋จ
- ํ์ฌ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์๋ก์ด ํ๋ก๊ทธ๋จ(์ฝ๋ ๋ฐ ๋ฐ์ดํฐ)์ผ๋ก ๋ฎ์ด์์์ง
๋ช
๋ น ์คํ ์๋ฃ ํ Child ํ๋ก์ธ์ค์์ `exit` ์์คํ
์ฝ์ ์ฌ์ฉํด ์ข
๋ฃํจ
- ์ด ๋์ ์ข
๋ฃ ์ํ๋ ์ฝ๋ ๋ฑ์ด Parent ํ๋ก์ธ์ค์๊ฒ ์ ๋ฌ๋จ
Parent ์ ธ์ `Wait` ์์คํ ์ฝ์์ ๋๊ธฐ๋ฅผ ๋ฒ์ด๋์ ๋ค์ ๊นจ์์ง๊ณ (re-awakened) ๋ค์ ์ฌ์ฉ์์๊ฒ ์ ธ ํ๋กฌํํธ๋ฅผ ์ ๊ณตํ์ฌ ์์ด ๋ช ๋ น์ ์ ๋ ฅ๋ฐ์ ์ ์๊ฒ ๋จ
์ดํ ์ฌ์ฉ์๊ฐ ์๋ก์ด ๋ช ๋ น์ ์ ๋ ฅํ๋ฉด ์์ ๊ณผ์ ์ด ๋ค์ ๋ฐ๋ณต๋จ
Background Processing
๋ช ๋ น ๋์ &(amperssand) ๊ธฐํธ๋ฅผ ์ฃผ์ด ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ํ๋ก์ธ์ค๋ฅผ ์คํํ ๊ฒฝ์ฐ
- Parent ์
ธ์ `Wait` ์์ฒญ์ ์คํตํ๊ณ ์ฆ์ ์ฌ์ฉ์์๊ฒ ์
ธ ํ๋กฌํํธ๋ฅผ ๋ฐํํจ
- ์ด๋ฅผ ํตํด ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค์ ์ ๋ช
๋ น์ด ๋ณ๋ ฌ๋ก ์คํ๋ ์ ์์
Foreground Processing
๋ช ๋ น์ด Foreground๋ก ์คํ๋ ๊ฒฝ์ฐ Child ํ๋ก์ธ์ค์ ์ข ๋ฃ ๋๋ ์ค์ง ์ ํธ๋ฅผ ๋ฐ์ ๋ ๊น์ง Parent ์ ธ์ ๋๊ธฐ๋ชจ๋
์์ธ
echo, kill๊ณผ ๊ฐ์ด ์ ธ ๋ด์ ๋นํธ์ธ ๋์ด ์๋ ๋ช ๋ น์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ ๋ก๋ ๊ณผ์ ์ด ํ์ํ์ง ์์ผ๋ฏ๋ก fork ๋ฐ exec ํธ์ถ์ด ๋ฐ์ํ์ง ์๋๋ค.