https://leeyh0216.github.io/posts/sid_pid_ppid_pgid/

 

Linux - PID, PPID, PGID, SID๋ž€?

Linux์˜ PID, PPID, PGID, SID๋ž€?

leeyh0216.github.io

Linux์˜ PID, PPID, PGID, SID๋ž€?

๊ฐœ๋… ์ •๋ฆฌ

PID

PID(Process ID)๋Š” ์šด์˜์ฒด์ œ์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค์— ๋ถ€์—ฌํ•˜๋Š” ๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

PPID

PPID(Parent Process ID)๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ PID๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

๋งŒ์ผ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์ผ์ฐ ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ๊ณ ์•„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋˜์–ด PPID๋กœ init process์˜ PID(1)๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

PGID

ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน(Process Group)์€ 1๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค์˜ ๋ฌถ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

PGID(Process Group ID)๋Š” ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ€์—ฌ๋˜๋Š” ๋ฒˆํ˜ธ์ด๋‹ค.

SID

์„ธ์…˜(Session)์€ 1๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์˜ ๋ฌถ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

SID(Session ID)๋Š” ์ด๋Ÿฌํ•œ ์„ธ์…˜์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ€์—ฌ๋˜๋Š” ๋ฒˆํ˜ธ์ด๋‹ค.

๋ฆฌ๋ˆ…์Šค์—์„œ์˜ PID, PPID, PGID, SID

๋ฆฌ๋ˆ…์Šค ์šด์˜์ฒด์ œ์—์„œ PID, PPID, PGID, SID๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ps ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ PID, PPID, PGID, SID, COMMAND๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

   

์œ„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.(Docker, Ubuntu 16.04)

   

๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€ ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ ๊ด€๊ณ„ ์ดํ•ดํ•˜๊ธฐ

1 ~ 100 ๊นŒ์ง€ ์ˆœํšŒํ•˜๋ฉฐ “Hello World”๋ฅผ ์ถœ๋ ฅํ•˜๋Š” child.sh์™€ ์ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” parent.sh ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

child.sh

   

parent.sh

   

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด parent.sh๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ํ•˜๊ณ , ps -A -o pid,ppid,pgid,sid,command ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก์„ ํ™•์ธํ•ด๋ณธ๋‹ค.

   

child.sh์˜ PPID๊ฐ€ ์ž์‹ ์„ ์‹คํ–‰ํ•œ parent.sh์˜ PID์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ parent.sh์˜ PGID์™€ child.sh์˜ PGID๊ฐ€ 502๋กœ ๋™์ผํ•œ Process Group์— ์†ํ•ด์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

PGID์˜ ์กด์žฌ ์ด์œ 

์œ„์˜ ์ƒํƒœ์—์„œ kill 502 ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ parent.sh ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•œ ๋’ค, ps -A -o pid,ppid,pgid,sid,command ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก์„ ํ™•์ธํ•ด๋ณธ๋‹ค.

   

parent.sh๊ฐ€ ์‹คํ–‰ํ•œ child.sh๋Š” ์•„์ง๋„ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

child.sh๊ฐ€ ๊ณ„์† ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์ด์œ ๋Š” kill ๋ช…๋ น์–ด์˜ Usage๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋‹ค.

   

kill ๋ช…๋ น์–ด๋Š” PID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, ํŠน์ • Process์— Signal์„ ๋ณด๋‚ธ๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ Signal์„ ์ˆ˜์‹ ํ•œ Process๋Š” ์ž๊ธฐ ์ž์‹ ์ด ์ข…๋ฃŒ๋  ๋ฟ ์ž์‹ ํ”„๋กœ์„ธ์Šค์—๊นŒ์ง€ Signal์„ ์ „๋‹ฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด POSIX ๊ธฐ๋ฐ˜ ์šด์˜์ฒด์ œ์—์„œ๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฌถ์–ด์„œ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ณ , ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์— PGID๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ํ•œ๋ฒˆ์— ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

PGID๋กœ ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒํ•˜๊ธฐ

๋‹ค์‹œ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ps -A -o pid,ppid,pgid,sid,command ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก์„ ํ™•์ธํ•œ๋‹ค.

 
 

kill -- -$PGID ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Process Group์— ์†ํ•œ ๋ชจ๋“  Process๋“ค์„ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค.

   

์œ„ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋’ค ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ™•์ธํ•˜๋ฉด parent.sh์™€ child.sh ๋ชจ๋‘ ์ข…๋ฃŒ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

   

PGID ๋ณ€๊ฒฝํ•˜์—ฌ ์ž์‹ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ํ•˜๊ธฐ

PGID๋ฅผ ํ†ตํ•œ Kill ๋ช…๋ น์–ด ์ˆ˜ํ–‰ ์‹œ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋œ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด, ์ž์‹ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ์ „ PGID๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค.

C๋‚˜ Python์—์„œ๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜์ง€๋งŒ, Bash Script์—์„œ๋Š” Job Control ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™” ์‹œํ‚ค๋Š” ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด PGID๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

parent.sh๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•œ ํ›„ ์‹คํ–‰ํ•ด๋ณด์ž.

   

์ž์‹ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ์ „ set -o monitor ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž์‹ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ์‹œ PGID๋ฅผ ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ PID๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.(set -o monitor ๋ช…๋ น์–ด์˜ ์ž์„ธํ•œ ๋‚ด์šฉ์€ bash manual์˜ Job Control์„ ํ™•์ธ)

parent.sh ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ›„ ps -A -o pid,ppid,pgid,sid,command ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•ด๋ณด์ž.

   

parent.sh์˜ PGID๊ฐ€ 965์ธ ๋ฐ˜๋ฉด child.sh์˜ PGID๋Š” child.sh์˜ PID์™€ ๋™์ผํ•œ 966์œผ๋กœ, PGID๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•

+ Recent posts