Linux

Linux Command Shell ์˜ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ๊ณผ์ •

๐Ÿง Yon 2024. 1. 10. 15:11
๋ฐ˜์‘ํ˜•

๋ฆฌ๋ˆ…์Šค ์ปค๋งจ๋“œ ์…ธ(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 ํ˜ธ์ถœ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
๋ฐ˜์‘ํ˜•