ÇÁ·Î¼¼½º °ü°è
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

ÇÁ·Î¼¼½º
Áö±Ý Å͹̳ο¡¼­ ps ¸í·ÉÀ» ½ÇÇàÇÏ¸é ¼ö¸¹Àº ÇÁ·Î¼¼½º°¡ ¶° ÀÖÀ½À» ¾Ë¼ö ÀÖ´Ù. ÇÁ·Î¼¼½º¶õ ½Ã½ºÅÛ»ó¿¡¼­ ¾î¶°ÇÑ ¸í·ÉÀ» ½ÇÇàÇÔÀ¸·Î½á »ç¿ëÀÚ¿Í OS, OS ¿Í ½Ã½ºÅÛ °£ÀÇ ´ëÈ­°¡ °¡´ÉÇϵµ·Ï ÇØÁÖ´Â ½ÇÇà °´Ã¼ÀÌ´Ù.
ÀÌ·¯ÇÑ ÇÁ·Î¼¼½º´Â ¿©·¯ºÐÀÌ À̹ÌÁö¸¦ º¸°Å³ª, À¥¼­ÇÎÀ» Çϰųª, À½¾ÇÀ» µè°Å³ª ȤÀº À¥¼­ºñ½º¸¦ ÇÏ´Âµî °¢ °´Ã¼ÀÇ Æ¯¼º¿¡ µû¶ó ´Ù¾çÇÑ ¾÷¹«¸¦ ¼öÇàÇÏ°Ô µÈ´Ù.
[root@localhost root]# ps -aux 
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2  1384  520 ?        S    21:37   0:04 init
root         2  0.0  0.0     0    0 ?        SW   21:37   0:00 [keventd]
root         3  0.0  0.0     0    0 ?        SW   21:37   0:00 [kapm-idled]
root         4  0.0  0.0     0    0 ?        SWN  21:37   0:00 [ksoftirqd_CPU0]
root         5  0.0  0.0     0    0 ?        SW   21:37   0:00 [kswapd]
...
root       930  0.0  0.3  2920 1016 tty1     S    21:39   0:00 /bin/sh /usr/X11R
root       937  0.0  0.2  2320  672 tty1     S    21:39   0:00 xinit /etc/X11/xi
root       938  0.7  5.9 74844 15056 ?       S<   21:39   0:34 /etc/X11/X :0
root       946  0.0  0.4  2956 1108 tty1     S    21:39   0:00 /bin/bash /usr/bi
root      1011  0.0  1.9 16044 5020 ?        S    21:39   0:00 kdeinit: Running.
...
±×·±µ¥ ÀÌ·¯ÇÑ ÇÁ·Î¼¼½º°¡ ¾î´À¼ø°£ °©Àڱ⠻ý±âÁø ¾Ê¾ÒÀ»°ÍÀÌ´Ù. ÃÖÃÊÀÇ ¾î´ÀÇÑ ½ÃÀÛÁ¡ÀÌ ÀÖÀ»°ÍÀÌ´Ù. ÀÌ ½ÃÀÛÁ¡¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸ÀÚ

init ÇÁ·Î¼¼½º
¸ðµç ÇÁ·Î¼¼½º´Â À§¿¡¼­ ó·³ PID¸¦ °¡Áö°í ¶ÇÇÑ PPID ¸¦ °¡Áø´Ù. PID¶õ ÇÁ·Î¼¼½ºÀÚ½ÅÀ» °¡¸®Å°´Â ÀÏ·ÃÀÇ ¹øÈ£À̸ç PPID¶õ ÀÚ½ÅÀ» ½ÇÇà½ÃŲ ºÎ¸ðÇÁ·Î¼¼½ºÀÇ PID¸¦ °¡¸®Å²´Ù.
±×·¸´Ù¸é ÀÚ½ÅÀÇ ºÎ¸ð ÇÁ·Î¼¼½º¸¦ ½ÇÇà½ÃŲ ÇÁ·Î¼¼½º°¡ Á¸ÀçÇÒ°ÍÀ̰í, ¶Ç ±× ºÎ¸ð ÇÁ·Î¼¼½º¸¦ ½ÇÇàÇÑ ÇÁ·Î¼¼½º°¡ Á¸ÀçÇÒ°ÍÀÌ´Ù.
ÀÌ·± ½ÄÀ¸·Î À¯ÃßÇØ¼­ »ý°¢ÇØ º¸¸é °á±¹ ÃÖÃÊÀÇ Á¶»ó ÇÁ·Î¼¼½º°¡ Á¸ÀçÇÒ°ÍÀ̶ó´Â °á·Ð¿¡ µµ´ÞÇÒ¼ö ÀÖÀ»°ÍÀε¥(Àηù·Î »ý°¢Çغ¸ÀÚ¸é, "¾Æ´ã" Á¤µµ), ±×°ÍÀÌ ¹Ù·Î PID 1¹øÀ» °¡Áö´Â init ÇÁ·Î¼¼½ºÀÌ´Ù.
¸ðµç ÇÁ·Î¼¼½º´Â init ·ÎºÎÅÍ fork & exec °úÁ¤À» °ÅÃļ­ µ¶¸³µÈ ÇÁ·Î¼¼½º·Î ÀÓ¹«¸¦ ¼öÇàÇÏ°Ô µÈ´Ù.

fork ¿Í exec
±×·³ fork ¿Í exec ¿¡ ´ëÇØ¼­ Á» ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.
fork ¿Í exec ´Â µÑ´Ù À¯´Ð½º ½Ã½ºÅÛ¿¡¼­ »õ·Î¿î ÇÁ·Î¼¼½º¸¦ »ý¼º½Ã۱â À§Çؼ­ »ç¿ëÇÏ´Â System Call ÇÔ¼öµéÀÌ´Ù.
µÑ´Ù »õ·Î¿î ÇÁ·Î¼¼½º¸¦ »ý¼ºÇϴµ¥ ±× ÇൿÀÌ ¾à°£ ´Ù¸£´Ù.
fork ÀÇ °æ¿ì´Â ¾î¶² ÇÁ·Î¼¼½º¿¡¼­ fork ¸¦ ½ÇÇàÇÏ°Ô µÇ¸é, ÀÚ½ÅÀÇ ÇÁ·Î¼¼½º¿Í ¶È°°Àº ÇÁ·Î¼¼½º¸¦ copy-on-write Çü½ÄÀ¸·Î ½ÇÇàÇÏ°Ô µÇ¸ç, À̶§ »ý¼ºµÈ ÇÁ·Î¼¼´Â ÀڽŸ¸ÀÇ PID¸¦ °¡Áö°í µ¶ÀÚÀûÀÎ ±æÀ» °¡°Ô µÈ´Ù. ¹°·Ð À̶§ »ý¼ºµÈ ÇÁ·Î¼¼¼­ÀÇ ºÎ¸ð ÇÁ·Î¼¼½º´Â ÃÖÃÊ¿¡ ½ÇÇàµÈ ÇÁ·Î¼¼½º°¡ µÉ°ÍÀÌ´Ù.
¿ì¸®´Â ÀÌ·¯ÇÑ ÃÖÃÊÀÇ ÇÁ·Î¼¼½º¸¦ ºÎ¸ð ÇÁ·Î¼¼½º¶ó°í Çϰí fork µÇ¾î¼­ ¸¸µé¾îÁø ÇÁ·Î¼¼½º¸¦ ÀÚ½Ä ÇÁ·Î¼¼½º¶ó°í ÇÑ´Ù.

¿¹Á¦ fork.c
#include <unistd.h> 
#include <stdlib.h> 
#include <string.h> 

int main()
{
    int pid;
    
    pid = fork();

    if (pid == -1)
    {
        perror("fork error ");
        exit(0);
    }
    // ÀÚ½ÄÇÁ·Î¼¼½ºÀϰæ¿ì 
    else if (pid == 0)
    {
        printf("ÀÚ½Ä\n");
        pause();
    }
    // ºÎ¸ðÇÁ·Î¼¼½ºÀÇ °æ¿ì
    else
    {
        printf("ºÎ¸ð\n");
        pause();
    }
}
À§ÀÇ ÇÁ·Î±×·¥À» ½ÇÇà½Ã۰í
[root@localhost test]# ./fork
ºÎ¸ð
ÀÚ½Ä
ps ¸¦ ÀÌ¿ëÇØ¼­ È®ÀÎÇØ º¸¸é ¾Æ·¡¿Í °°Àº ps »óŸ¦ º¸¿©ÁÙ°ÍÀÌ´Ù.
[root@localhost root]# ps -efjc | grep fork | grep -v fork
UID        PID  PPID  PGID   SID   CLS PRI STIME TTY          TIME CMD
root      2375  1963  2375  1963     -  30 23:20 pts/6    00:00:00 ./fork
root      2376  2375  2375  1963     -  30 23:20 pts/6    00:00:00 ./fork
º¸¸é ¾Ë°ÚÁö¸¸ ¶È°°Àº À̸§ÀÇ ÇÁ·Î¼¼½º°¡ 2°³ »ý¼ºµÇ¾úÀ½À» ¾Ë¼ö ÀÖÀ¸¸ç, 2375 °¡ ºÎ¸ðÇÁ·Î¼¼½ºÀ̰í, 2376 ÀÌ 2375 ÀÇ ÀÚ½ÄÇÁ·Î¼¼½ºÀÓÀ» PPID Á¤º¸¸¦ ÀÌ¿ëÇØ¼­ ¾Ë¼ö ÀÖÀ»°ÍÀÌ´Ù.
ÀÌó·³ fork ´Â ÇÁ·Î¼¼½ºÀÇ º¹»çº»À» ¸¸µé¶§ »ç¿ëÇÑ´Ù.
ÀÌ·¯ÇÑ fork ÀÇ Æ¯¼ºÀ¸·Î ´Ù¼öÀÇ Å¬¶óÀÌ¾ðÆ® ¿¬°áÀ» ó¸®ÇØ¾ß ÇÏ´Â ³×Æ®¿÷¼­¹ö ¸¦ Á¦ÀÛÇÒ¶§ ¸Å¿ì ÈçÈ÷ »ç¿ëµÈ´Ù.
fork ÇÔ¼ö¸¦ ½ÇÇàÇϸé int ÇüÀÇ Á¤¼ö¸¦ ³Ñ°ÜÁÖ°Ô µÇ´Âµ¥, ÀÚ½Ä ÇÁ·Î¼¼½º¿¡¼­´Â 0ÀÌ ¹ÝȯµÇ°í, ºÎ¸ð ÇÁ·Î¼¼½º¿¡¼­´Â 0º¸´Ù Å« Á¤¼ö°¡ ¹ÝȯµÈ´Ù.
¿©·¯°¡Áö ÀÌÀ¯·Î fork °¡ ½ÇÆÐÇÑ´Ù¸é -1 À» µ¹·ÁÁÖ°Ô µÉ°ÍÀÌ´Ù.

exec
exec ´Â ÈçÈ÷ exec °è¿­ÇÔ¼ö±º¿¡ ÀÇÇØ¼­ ±¸ÇöµÇ¸ç, exec ÇÔ¼ö±º¿¡´Â execl(3), execlp, execle.. µîÀÌ ÀÖ´Ù. ¸ðµÎ °°Àº ÀÏÀ» Çϸç, ´ÜÁö ÇÁ·Î±×·¥½ÇÇà ¾Æ±Ô¸ÕÆ®¸¦ ´Ù·ç´Âµ¥ ¾à°£¾¿ÀÇ Â÷À̸¦ °¡Áö°í ÀÖÀ» »ÓÀÌ´Ù.
exec ¿ª½Ã fork ¿Í ¸¶Âù°¡Áö·Î »õ·Î¿î ÇÁ·Î»õ½º¸¦ »ý¼º½ÃŰÁö¸¸, fork ¿Í °°ÀÌ copy-on-write ¸¦ ÀÌ¿ëÇÑ ÀüÇô »õ·Î¿î ÇÁ·Î¼¼½º¸¦ ½ÇÇà½ÃŰÁö ¾Ê°í, ÇöÀçÀÇ ÇÁ·Î¼¼½ºÀ̹ÌÁö¸¦ »õ·Î¿î ÇÁ·Î¼¼½º À̹ÌÁö°¡ µ¤¾î½á ¹ö¸°´Ù.
´ÙÀ½ÀÇ ¿¹Á¦¸¦ ÄÄÆÄÀÏÇÑÈÄ ½ÇÇàÇϸé ÀÌÇØ°¡ ½¬¿ï°ÍÀÌ´Ù.

myexec.c
#include <unistd.h> 
#include <string.h> 

int main()
{
    printf("¿ø·¡ ÇÁ·Î¼¼½º : %d\n", getpid());
    sleep(1);

    execl("/bin/sh", "sh", NULL);
    printf("I will be back\n");    // ½ÇÇàµÉ±î ?
    exit(0);
}
À§ÀÇ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÑÈÄ ½ÇÇà½Ã۸é "/bin/sh" °¡ ½ÇÇàµÇ°í ½© ÇÁ·ÒÇÁÆ®°¡ »ç¿ëÀÚ ÀÔ·ÂÀ» ±â´Ù¸®´Â°É º¼¼ö ÀÖÀ»°ÍÀÌ´Ù.
¿©±â¿¡¼­ exit ¸í·ÉÀ» »ç¿ëÇØ¼­ ½©À» Á¾·áÇÏ¸é ¾î¶»°Ô µÉ±î ?
´ÙÀ½ ÀÇ printf ÇàÀ» ½ÇÇàÇØ¼­ "I will be back" ¶ó´Â ¹®ÀåÀ» º¼¼ö ÀÖ°Ô µÉ±î ?
´ë´äÀº ¾Æ´Ï¿À ÀÌ´Ù. ÀÌÀ¯´Â À§¿¡¼­ ¼³¸íÇßµíÀÌ, execl ÇÔ¼ö¸¦ È£ÃâÇØ¼­ /bin/sh ¸¦ ¼öÇàÇѼø°£ myexec ÇÁ·Î¼¼½º¸¦ /bin/sh °¡ µ¤¾î½á ¹ö¸®±â ¶§¹®ÀÌ´Ù.
ps ¸¦ ÀÌ¿ëÇØ¼­ Çѹø È®ÀÎÀ» ÇØº¸µµ·Ï ÇÏÀÚ.
¸ÕÀú ./myexec ¸¦ ½ÇÇà½Ã۰í
[root@localhost test]# ./myexec
¿ø·¡ ÇÁ·Î¼¼½º : 2447
sh-2.05# 
ps ¸¦ ÀÌ¿ëÇØ¼­ myexec ¶ó´Â À̸§ÀÇ process ¶ó´Â À̸§ÀÇ ÇÁ·Î¼¼½º°¡ »ý¼ºµÇ¾ú´ÂÁö ¾Ë¾Æº¸ÀÚ.
[root@localhost root]# ps -aux | grep myexec

³ªÅ¸³ªÁö ¾ÊÀ½À» ¾Ë¼ö ÀÖ´Ù. ±×·¯¸é pid 2447 ¹øÀÌ Á¸ÀçÇÏ´ÂÁö Çѹø È®ÀÎÇØ º¸µµ·Ï ÇÏÀÚ.
[root@localhost root]# ps -aux | grep 2447
root      2447  0.0  0.5  3280 1356 pts/6    S    23:39   0:00 sh
À§ÀÇ °á°ú¸¦ º¸¸é ¾Ë°ÚÁö¸¸ myexec ´ë½Å execl ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ ½ÇÇà½ÃŲ sh °¡ 2447 ÇÁ·Î¼¼½º¸¦ ¿ÏÀüÈ÷ µ¤¾î½á ¹ö·ÈÀ½À» ¾Ë¼ö ÀÖÀ»°ÍÀÌ´Ù.

Âü ±×¸®°í system(3) À̶ó´Â »õ·Î¿î ÇÁ·Î¼¼½º¸¦ ½ÃŰ´Â ÇÔ¼öµµ Àִµ¥, fork & exec ÀÇ ´Ù¸¥ ±¸ÇöÀ¸·Î º¸¸é µÉ°ÍÀ̸ç, ½ÇÁ¦·Î system À» »ç¿ëÇÏÁö ¾Ê°í, fork & exec ¸¦ ÅëÇÏ¿© ±¸ÇöÇÏ´Â °æ¿ìµµ ÀÖ´Ù.


À§ÀÇ fork ¿Í exec ÀÇ °³³äÀ» ¿ÏÀüÈ÷ ÀÌÇØÇß´Ù¸é ÀÌÁ¦ ´ÜÁö ÇϳªÀÇ init ÇÁ·Î¼¼½º¿¡¼­ ´Ù¸¥ ¸ðµç ÇÁ·Î¼¼½º°¡ fork & exec ¹æ½ÄÀ¸·Î ¾î¶»°Ô ÆÄ»ýµÇ¾î¼­ ½ÇÇàµÇ´ÂÁö °¨À» ÀâÀ»¼ö ÀÖÀ»°ÍÀÌ´Ù.
init ÇÁ·Î¼¼½º¿¡°Ô ¾î¶² ÇÁ·Î¼¼½º¸¦ ½ÇÇà½ÃÄѶó´Â ¸Þ½ÃÁö°¡ Àü´ÞµÇ¸é, init ´Â fork ¸¦ ÀÌ¿ëÇØ¼­ ÀÚ±âÀÚ½ÅÀ» º¹»çÇÑ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ Çϳª ½ÇÇà½ÃŰ°Ô µÉ°ÍÀÌ´Ù. ±×¸®°í ³ª¼­ º¹»çµÈ ÀÚ½ÄÇÁ·Î¼¼½º¿¡¼­ exec ¸¦ ½á¼­ »õ·Î¿î ÇÁ·Î¼¼½º¸¦ ½ÇÇà½Ã۸é init ´Â »õ·Î¿î ÇÁ·Î¼¼½º·Î ´ëü½ÇÇàµÇ´Â °ÍÀÌ´Ù.
 new_process ¸¦ ½ÇÇàÇ϶ó
     |
     V
 +---------+ fork  +---------+ exec(new_process)   +-------------+
 | init(1) |----->>| init(?) |-------------------->| new_process |
 +---------+       +---------+                     +-------------+


ÇÁ·Î¼¼½ºÀÇ Áý´Ü(group)°ú ¼¼¼Ç(session)
¿ìÁÖ¸¦ ¿¹·Î µé¾îº¸¸é Ç༺ ÇϳªÇϳª¸¦ ÇÁ·Î¼¼½º¶ó°í »ý°¢ÇÒ¼ö ÀÖÀ»°ÍÀÌ´Ù, ±×·±µ¥ º¸Åë Ç༺Àº ÇϳªÀÇ Ç×¼º°è¿¡ Æ÷ÇÔµÇ°Ô µÈ´Ù. žç°è¿Í °°Àº °ÍÀÌ ÀϹÝÀûÀÎ °æ¿ì°¡ µÉ°ÍÀ̸ç, ÀÌ·¯ÇÑ Ç×¼º°è´Â ´Ù½Ã ÀºÇϰè¶ó´Â ´õ¿í Å« ±Ô¸ðÀÇ ÃµÃ¼¿¡ ¼ÓÇÏ°Ô µÈ´Ù.
ÇÁ·Î¼¼½ºµµ ¸¶Âù°¡ÁöÀÌ´Ù. °¢°¢ÀÇ ÇÁ·Î¼¼½º´Â ¾î¶°ÇÑ Áý´Ü¿¡ Æ÷ÇԵɼö ÀÖÀ¸¸ç, °¢°¢ÀÇ Áý´ÜÀº ´õ¿íÅ« Áý´Ü¿¡ Æ÷ÇԵɼö Àִµ¥, ÀÌ·¯ÇÑ °¢°¢ÀÇ Áý´ÜÀ» ¿ì¸®´Â Group ¶ó°í ºÎ¸£¸ç, ¿©·¯°³ÀÇ GruopÀ» Æ÷ÇÔÇÏ´Â ´õÅ« ±×·ìÀ» ¼¼¼ÇÀ̶ó°í ºÎ¸¥´Ù.
º¸Åë ±×·ìÀº ¾î¶°ÇÑ ÀÛ¾÷À» Çϱâ À§Çؼ­ °øÅëÀÇ ¸ñÀûÀ¸·Î »ý¼ºµÈ ÇÁ·Î¼¼½ºµéÀÇ Áý´ÜÀ» ¸»Çϴµ¥, °¡Àå ÀϹÝÀûÀÎ ¿¹°¡ fork ·Î »ý¼ºµÈ ÀÚ½Ä ºÎ¸ð°£ÀÇ ÇÁ·Î¼¼½º ±×·ìÀÌ µÉ°ÍÀÌ´Ù.
[yundream@localhost yundream]$ ps -efjc | grep httpd
UID        PID  PPID  PGID   SID   CLS PRI STIME TTY          TIME CMD
root     29635     1 29635 29635     -  30 Mar20 ?        00:00:00 httpd
nobody   29636 29635 29635 29635     -  30 Mar20 ?        00:00:09 httpd
nobody   29637 29635 29635 29635     -  30 Mar20 ?        00:00:07 httpd
nobody   29638 29635 29635 29635     -  30 Mar20 ?        00:00:07 httpd
nobody   29639 29635 29635 29635     -  30 Mar20 ?        00:00:07 httpd
À§´Â fork ¸¦ »ç¿ëÇÏ´Â ´ëÇ¥ÀûÀÎ ¼­¹öÇÁ·Î±×·¥ÀÎ httpdÀÇ ps °á°ú ÀÌ´Ù. º¸¸é ¾Ë°ÚÁö¸¸ 29635 ÇÁ·Î¼¼½º°¡ ÃÖÃÊ¿¡ »ý¼ºµÇ°í, ³ª¸ÓÁö ÇÁ·Î¼¼½ºµéÀÌ 29635 ¸¦ ºÎ¸ð·Î °¡Áö´Â ÀÚ½ÄÇÁ·Î¼¼½º·Î »ý¼ºµÇ¾úÀ½À» ¾Ë¼ö ÀÖ´Ù(PPID¸¦ È®ÀÎÀÎÇ϶ó).
±×¸®°í À̵éÀº µ¿ÀÏÇÑ ±×·ì(PGID¸¦ È®ÀÎÇ϶ó)À¸·Î ¹­¿© ÀÖÀ½À» ¾Ë¼ö ÀÖ´Ù.
À̵éÇÁ·Î¼¼½º°¡ ¹Ù·Î ÇϳªÀÇ ÇÁ·Î¼¼½º ±×·ìÀÌ µÇ´Â°ÍÀÌ´Ù.
¸ðµç ±×·ì¿¡´Â ÁöµµÀÚ°¡ ÀÖ´Ù(žç°èÀÇ ÁöµµÀÚ°¡ žç? À̵íÀÌ). ÇÁ·Î¼¼½º Áý´Üµµ ¸¶Âù°¡Áö·Î ÁöµµÀÚ(Áý´ÜÀ» ÃÖÃÊ »ý¼ºÇÑ)°¡ Àֱ⠸¶·ÃÀÌ´Ù. PID¿Í PGID °¡ °°Àº ÇÁ·Î¼¼½º°¡ ±× ÇÁ·Î¼¼½º Áý´ÜÀÇ ÁöµµÀÚÀ̸ç, À§¿¡¼­ 29635 ¹ø ÇÁ·Î¼¼½º°¡ PGID 29635 Áý´ÜÀÇ ÁöµµÀÚ ÇÁ·Î¼¼½ºÀÓÀ» ¾Ë¼ö ÀÖ´Ù. °°Àº ÇÁ·Î¼¼½º Áý´Ü¿¡ ¼ÓÇÏ´Â ÇÁ·Î¼¼½ºµéÀº pipe µîÀ» ÅëÇÏ¿©¼­ ¼­·Î°£¿¡ Åë½ÅÀÌ °¡´ÉÇϸç, signal µîÀ» ó¸®ÇÔ¿¡ À־ ±×·ì³»ÀÇ ÇÁ·Î¼¼½º´Â µ¿ÀÏÇÑ ¾×¼ÇÀ» ÃëÇÑ´Ù.
¿¹¸¦ µé¾î¼­ 29635 ÇÁ·Î¼¼½º¸¦ Á×À̸é, ÇØ´ç ±×·ì¿¡ Æ÷ÇԵǾî ÀÖ´Â ¸ðµç ÀÚ½ÄÇÁ·Î¼¼½ºµµ ±×¿¡ ´ëÇÑ ¿µÇâÀ» ¹Þ´Â´Ù.
[yundream@localhost yundream]$ kill -9 29635 
[yundream@localhost yundream]$ ps -efjc | grep httpd
UID        PID  PPID  PGID   SID   CLS PRI STIME TTY          TIME CMD
nobody   29636     1 29635 29635     -  30 Mar20 ?        00:00:09 httpd
nobody   29637     1 29635 29635     -  30 Mar20 ?        00:00:07 httpd
nobody   29638     1 29635 29635     -  30 Mar20 ?        00:00:07 httpd
nobody   29639     1 29635 29635     -  30 Mar20 ?        00:00:07 httpd

¼¼¼ÇÀº ±×·ìÀ» Æ÷ÇÔÇÏ´Â ±×·ìÀ̶ó°í »ý°¢ÇÏ¸é µÈ´Ù. ÇϳªÀÇ ¼¼¼ÇÀº ¿©·¯°³ÀÇ ±×·ìÀ» °¡Áú¼ö ÀÖÀ¸¸ç, º¸Åë login ½Ã »ý¼ºµÈ´Ù. ´Ù¸¥°æ¿ì·Î µ¥¸ó°ú °°ÀÌ ÀÚ±â ÀÚ½ÅÀÌ ¼¼¼ÇÀ» °¡Á®¾ßÇÏ´Â °æ¿ì°¡ Àִµ¥ ±×·¯ÇÑ °æ¿ì¿¡ ¼¼¼ÇÀÌ »ý¼ºµÇ±âµµ ÇÑ´Ù.
[yundream@localhost yundream]$ ps -efjc | grep 945 | grep -v grep
UID        PID  PPID  PGID   SID   CLS PRI STIME TTY          TIME CMD
root       945     1   945   945     -  30 Mar13 tty3     00:00:00 login -- root
root     21604   945 21604   945     -  30 11:47 tty3     00:00:00 -bash
root     23964 21604 23964   945     -  30 13:27 tty3     00:00:00 ./fork
root     23965 23964 23964   945     -  30 13:27 tty3     00:00:00 ./fork
À§ÀÇ ps È­¸éÀº root À¯Àú·Î »õ·Î ·Î±×ÀÎ ÇØ¼­ ./fork ¸¦ ½ÇÇà½ÃŲ °úÁ¤ À» ÅëÇØ¼­ ¼¼¼ÇÀÌ ¾î¶»°Ô »ý¼ºµÇ´ÂÁö¸¦ º¸¿©ÁÖ°í ÀÖ´Ù. ./fork ÇÁ·Î±×·¥Àº fork ¸¦ ÅëÇØ¼­ ºÎ¸ðÀÚ½Ä ÇÁ·Î¼¼½º¸¦ »ý¼ºÇѰÍÀ̸ç, À̵éÀº PGID-23964 ÀÇ ±×·ì½Äº°ÀÚ¸¦ °¡Áö´Â °°Àº ±×·ìÀ¸·Î ¹­ÀÌ°Ô µÈ´Ù. ¶ÇÇÑ ÀÌ ±×·ìÀº ¼¼¼Ç¾ÆÀ̵ð 945 ¸¦ °¡Áö´Â ¼¼¼Ç¿¡ ¹­ÀÌ°Ô µÈ´Ù.
°á·ÐÀûÀ¸·Î 945 ¼¼¼ÇÀº 945, 21604, 23946 ¼¼°³ÀÇ ±×·ìÀ» °¡Áö°Ô µÈ´Ù. ¼¼¼Ç¿ª½Ã ±×·ì°ú ¸¶Âù°¡Áö·Î ¼¼¼ÇÁöµµÀÚ¸¦ °¡Áö¸ç, ¼¼¼ÇÁöµµÀÚ´Â ±× ¼¼¼ÇÀ» ÃÖÈÄ¿¡ ¸¸µç ÇÁ·Î¼¼½º·Î PID ¿Í SID°¡ °°°Ô µÈ´Ù(ÀÚ½ÅÀÇ PID¹øÈ£·Î SID¸¦ ¸¸µç´Ù).
¸¸¾à¿¡ ¼¼¼ÇÁöµµÀÚ ÇÁ·Î¼¼½º¸¦ kill ½ÃŰ¸é ¾î¶»°Ô µÉ±î ?
[root@localhost root]$ ps -efjc | grep 945 | grep -v grep
¼¼¼Ç ÇÁ·Î¼¼½º°¡ »ç¶óÁöÀÚ ±×¿Í °ü·ÃµÈ ¸ðµç ÇÁ·Î¼¼½º°¡ kill µÇ¾úÀ½À» ¾Ë¼ö ÀÖ´Ù.
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.