13Àå. ½Ã½ºÅÛ°ú °ü¸®ÀÚ¿ë ¸í·É¾î ½Ã½ºÅÛ°ú °ü¸®ÀÚ¿ë ¸í·É¾îÀÇ ÁÁÀº ¿¹´Â /etc/rc.d ¿¡ ÀÖ´Â ½ÃÀÛ, Á¾·á ½ºÅ©¸³Æ®µéÀÔ´Ï´Ù. ÀÌ ¸í·É¾îµéÀº º¸Åë ½Ã½ºÅÛ °ü¸®³ª ÆÄÀϽýºÅÛÀ» ±ä±ÞÇÏ°Ô °íÄ¡·Á°í ÇÒ ¶§ ·çÆ®°¡ »ç¿ëÇÕ´Ï´Ù. ÀÌµé ¸î¸îÀº À߸ø ¾²¸é ½Ã½ºÅÛÀ» ¸Á°¡Æ®¸± ¼ö Àֱ⠶§¹®¿¡ »ç¿ë¿¡ ÁÖÀǸ¦ ¿äÇÕ´Ï´Ù. »ç¿ëÀÚ¿Í ±×·ì chown, chgrp chown ¸í·É¾î´Â ÆÄÀÏÀÇ ¼ÒÀ¯±ÇÀ» ¹Ù²ãÁÝ´Ï´Ù. root°¡ ƯÁ¤ »ç¿ëÀÚ°¡ ¼ÒÀ¯ÇÑ ÆÄÀÏÀ» ´Ù¸¥ »ç¿ëÀÚ¿ëÀ¸·Î ¹Ù²Ù·Á°í ÇÒ ¶§ À¯¿ëÇÏ°Ô ¾²ÀÔ´Ï´Ù. ÇÏÁö¸¸, ÀÏ¹Ý »ç¿ëÀÚ´Â ÀÚ½ÅÀÌ ¼ÒÀ¯ÇÑ ÆÄÀÏÁ¶Â÷µµ ¼ÒÀ¯±ÇÀ» ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù. [1] root# chown bozo *.txt chgrp ¸í·É¾î´Â ÆÄÀÏÀÇ ±×·ì ¼ÒÀ¯±ÇÀ» ¹Ù²ãÁÝ´Ï´Ù. ÀÌ ¸í·É¾î¸¦ ¾²·Á¸é ±× ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚÀÌ°í ¹Ù²Ù·Á´Â ±×·ìÀÇ ¸â¹ö¿©¾ß ÇÕ´Ï´Ù(ȤÀº rootÀ̰ųª). chgrp --recursive dunderheads *.data # $PWD µð·ºÅ丮ÀÇ ¸ðµç ÇÏÀ§ µð·ºÅ丮("recursive"¿¡ ÀÇÇØ)ÀÇ # ¸ðµç "*.data" ÆÄÀϵéÀº "dunderheads" ±×·ìÀÌ ±× ¼ÒÀ¯±ÇÀ» °®½À´Ï´Ù. useradd, userdel °ü¸®ÀÚ¿ë ¸í·É¾îÀÎ useradd´Â ½Ã½ºÅÛ¿¡ »ç¿ëÀÚ °èÁ¤À» Ãß°¡ÇØ ÁÖ°í ±× »ç¿ëÀÚ¿ëÀ¸·Î ÁöÁ¤µÈ Ȩ µð·ºÅ丮¸¦ ¸¸µé¾î ÁÝ´Ï´Ù. useradd¿Í ½ÖÀ» ÀÌ·ç´Â userdel´Â ½Ã½ºÅÛ¿¡¼­ »ç¿ëÀÚ °èÁ¤À» »èÁ¦ÇØ ÁÖ°í [2] ÇØ´ç ÆÄÀϵ鵵 »èÁ¦ÇØ ÁÝ´Ï´Ù. Âü°í: adduser ¸í·É¾î´Â useraddÀÇ µ¿ÀǾî·Î¼­, º¸Åë useradd¸¦ °¡¸£Å°´Â ½Éº¼¸¯ ¸µÅ© ÆÄÀÏÀÔ´Ï´Ù. id id ¸í·É¾î´Â ÇöÀç »ç¿ëÀÚÀÇ ½ÇÁ¦ ID¿Í À¯È¿ »ç¿ëÀÚ ID, ±×·ì ID¸¦ º¸¿©ÁÝ´Ï´Ù. ³»ºÎ bash º¯¼öÀÎ $UID, $EUID, $GROUPS¿Í ¦À» ÀÌ·ì´Ï´Ù. bash$ id uid=501(bozo) gid=501(bozo) groups=501(bozo),22(cdrom),80(cdwriter),81(audio) bash$ echo $UID 501 ¿¹ 9-4 Âü°í. who ½Ã½ºÅÛ¿¡ ÇöÀç ·Î±×ÀÎÇØ ÀÖ´Â ¸ðµç »ç¿ëÀÚ¸¦ º¸¿©ÁÝ´Ï´Ù. bash$ who bozo tty1 Apr 27 17:45 bozo pts/0 Apr 27 17:46 bozo pts/1 Apr 27 17:47 bozo pts/2 Apr 27 17:49 -mÀ» ÁÖ¸é ¿ÀÁ÷ ÇöÀç »ç¿ëÀÚ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸¸¸À» º¸¿©ÁÝ´Ï´Ù. who am i³ª who The Manó·³ who¿¡ ¾Æ¹« ÀÎÀÚ³ª µÎ °³ ³Ñ°ÜÁÖ¸é who -m À̶ó°í ÇÑ °Í°ú °°½À´Ï´Ù. bash$ who -m localhost.localdomain!bozo pts/2 Apr 27 17:49 whoami´Â who -m °ú ºñ½ÁÇÏÁö¸¸ »ç¿ëÀÚ À̸§¸¸ º¸¿©ÁÝ´Ï´Ù. bash$ whoami bozo w ·Î±×ÀÎ µÇ¾î ÀÖ´Â »ç¿ëÀÚ¿Í ±× »ç¿ëÀÚ¿Í °ü·ÃµÈ ¸ðµç ÇÁ·Î¼¼½º¸¦ º¸¿© ÁÝ´Ï´Ù. ÀÌ´Â whoÀÇ È®Àå ¹öÀüÀε¥, wÀÇ Ãâ·Â¿¡ grepÀ¸·Î ÆÄÀÌÇÁ¸¦ °É¾î¼­ ƯÁ¤ÇÑ »ç¿ëÀÚ³ª ÇÁ·Î¼¼½º¸¦ ãÀ» ¼ö ÀÖ½À´Ï´Ù. bash$ w | grep startx bozo tty1 - 4:22pm 6:41 4.47s 0.45s startx logname ÇöÀç »ç¿ëÀÚÀÇ ·Î±×ÀÎ À̸§À» /var/run/utmp¿¡¼­ ã¾Æ¼­ º¸¿©ÁÝ´Ï´Ù. À§¿¡¼­ ¼³¸íÇÑ whoami¿Í °ÅÀÇ µ¿ÀÏÇÑ ¸í·É¾îÀÔ´Ï´Ù. bash$ logname bozo bash$ whoami bozo ±×·¸Áö¸¸... bash$ su Password: ...... bash# whoami root bash# logname bozo su ´Ù¸¥ »ç¿ëÀÚ(substitute user)·Î ÇÁ·Î±×·¥À̳ª ½ºÅ©¸³Æ®¸¦ ½ÇÇà ½Ãŵ´Ï´Ù. rjones¶õ »ç¿ëÀÚ·Î ½©À» »õ·Ó°Ô ½ÃÀÛÇÏ°í ½ÍÀ¸¸é su rjones¶ó°í ÇÏ¸é µË´Ï´Ù. ¿É¼Ç ¾øÀÌ su¸¸ ½ÇÇà½ÃŰ¸é ±âº»ÀûÀ¸·Î root ·Î ¹Þ¾ÆµéÀÔ´Ï´Ù. ¿¹ A-10¸¦ Âü°íÇϼ¼¿ä. users ·Î±×ÀÎ Çϰí ÀÖ´Â ¸ðµç »ç¿ëÀÚ¸¦ º¸¿©ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î´Â who -q ¿Í °ÅÀÇ ºñ½ÁÇÑ ¸í·É¾îÀÔ´Ï´Ù. ac »ç¿ëÀÚ°¡ ·Î±×ÀÎ ÇØ ÀÖ´ø ½Ã°£À» /var/log/wtmp ¿¡¼­ Àо º¸¿©ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î´Â GNU °èÁ¤ À¯Æ¿¸®Æ¼(accounting utility) Áß ÇϳªÀÔ´Ï´Ù. bash$ ac total 68.08 last »ç¿ëÀÚ°¡ ¸¶Áö¸·À¸·Î ·Î±×ÀÎ ÇÑ ½Ã°£À» /var/log/wtmp¿¡¼­ Àо º¸¿©ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î´Â ¿ÜºÎ¿¡¼­ ·Î±×ÀÎ ÇÑ Á¤º¸µµ º¸¿©ÁÙ ¼ö ÀÖ½À´Ï´Ù. groups ÇöÀç »ç¿ëÀÚ°¡ ¼ÓÇØ ÀÖ´Â ±×·ìÀ» º¸¿©ÁÝ´Ï´Ù. ³»ºÎ º¯¼öÀÎ $GROUPS¿¡ ÇØ´çÇÏ´Â ¸í·É¾îÀÌÁö¸¸ ¼ýÀÚ°¡ ¾Æ´Ñ ±×·ì À̸§À¸·Î º¸¿©ÁÝ´Ï´Ù. bash$ groups bozita cdrom cdwriter audio xgrp bash$ echo $GROUPS 501 newgrp ·Î±×¾Æ¿ô ¾øÀÌ »ç¿ëÀÚÀÇ ±×·ì ID¸¦ º¯°æÇϱâ. ÀÌ ¸í·É¾î¸¦ ¾²¸é »õ ±×·ìÀÇ ÆÄÀÏ¿¡ Á¢±ÙÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. »ç¿ëÀÚ´Â º¸Åë µ¿½Ã¿¡ ¿©·¯ ±×·ìÀÇ ¸â¹öÀ̱⠶§¹®¿¡ ÀÌ ¸í·É¾î¸¦ ¾µ ÀÏÀº º°·Î ¾ø½À´Ï´Ù. Å͹̳Πtty ÇöÀç »ç¿ëÀÚÀÇ Å͹̳ΠÀ̸§À» º¸¿©ÁÝ´Ï´Ù. ¼­·Î ´Ù¸¥ ÇÑÅÒ, ¿¢½ºÅÒ À©µµ¿ì´Â ¼­·Î ´Ù¸¥ Å͹̳ηΠÀνĵǴ°Ϳ¡ ÁÖÀÇÇϼ¼¿ä. bash$ tty /dev/pts/1 stty Å͹̳Π¼¼ÆÃÀ» º¸¿©Áְųª º¯°æÇØ ÁÝ´Ï´Ù. ÀÌ º¹ÀâÇÑ ¸í·É¾î´Â ½ºÅ©¸³Æ®¿¡¼­ ¾²¿© Å͹̳Πµ¿ÀÛÀ̳ª Ãâ·ÂÇÏ´Â ¹æ¹ýÀ» Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. info ÆäÀÌÁö¸¦ Âü°íÇϰí, Á¶½ÉÇØ¼­ °øºÎÇϼ¼¿ä. ¿¹ 13-1. Áö¿ò ±ÛÀÚ(erase character) ¼¼ÆÃÇϱâ #!/bin/bash # erase.sh: "stty"·Î ÀԷ½ÃÀÇ Áö¿ò ±ÛÀÚ(erase character)¸¦ ¼¼Æ®Çϱâ. echo -n "À̸§ÀÌ ¹¹¿¡¿ä? " read name # ¾Æ¹« ±ÛÀÚ³ª Ä¡°í Áö¿ì·Á°í ÇØº¸¼¼¿ä. # ¾È µÉ °Ì´Ï´Ù. echo "À̸§ÀÌ $name ±º¿ä." stty erase '#' # "hashmark" (#) ¸¦ Áö¿ò ±ÛÀÚ·Î ¼¼Æ®. echo -n "À̸§ÀÌ ¹¹ÁÒ? " read name # ¸¶Áö¸·¿¡ Ä£ ±ÛÀÚ¸¦ # À¸·Î Áö¿öº¸¼¼¿ä. echo "$name °¡ ´ç½Å À̸§À̱º¿ä." exit 0 ¿¹ 13-2. ºñ¹Ð½º·± ºñ¹Ð¹øÈ£: Å͹̳Π¿¡ÄÚ ²ô±â #!/bin/bash echo echo -n "ºñ¹Ð¹øÈ£¸¦ ³ÖÀ¸¼¼¿ä " read passwd echo "ºñ¹Ð¹øÈ£´Â $passwd ÀÔ´Ï´Ù." echo -n "´©±º°¡°¡ ¾î±ú ³Ê¸Ó·Î ´ç½ÅÀ» º¸°í ÀÖ¾ú´Ù¸é, " echo "´ç½ÅÀÇ ºñ¹Ð¹øÈ£¸¦ ¾Ë¾Æ³ÂÀ» ¼öµµ ÀÖ½À´Ï´Ù." echo && echo # "and list"·Î ¹­ÀÎ ¶óÀÎ ÇÇµå µÎ ÁÙ" stty -echo # È­¸é ¿¡ÄÚ¸¦ ²ü´Ï´Ù. echo -n "ºñ¹Ð¹øÈ£¸¦ ´Ù½Ã ³ÖÀ¸¼¼¿ä " read passwd echo echo "ºñ¹Ð¹øÈ£´Â $passwd ÀÔ´Ï´Ù." echo stty echo # È­¸é ¿¡ÄÚ¸¦ ŵ´Ï´Ù. exit 0 stty¸¦ âÁ¶ÀûÀ¸·Î ½á¼­ »ç¿ëÀÚ°¡ ENTER¸¦ ¾È ´­·¯µµ ¾î¶² ۸¦ ´­·¶´ÂÁö¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ¿¹ 13-3. Ű´©¸§ ¾Ë¾Æ³»±â #!/bin/bash # keypress.sh: Ű´©¸§ ¾Ë¾Æ³»±â("hot keyboard"). echo old_tty_settings=$(stty -g) # ÇöÀç ¼¼ÆÃÀ» ÀúÀå. stty -icanon Keypress=$(head -c1) # GNU ½Ã½ºÅÛÀÌ ¾Æ´Ï¶ó¸é # $(dd bs=1 count=1 2> /dev/null) echo echo "\""$Keypress"\" ۰¡ ´­·È½À´Ï´Ù." echo stty "$old_tty_settings" # ¿ø·¡ ¼¼ÆÃÀ¸·Î º¹±¸. # Thanks, Stephane Chazelas. exit 0 ¿¹ 9-3 Âü°í. Å͹̳ΰú ¸ðµå Å͹̳ÎÀº º¸Åë ij³ë´ÏÄÃ(canonical) ¸ðµå·Î µ¿ÀÛÇÕ´Ï´Ù. »ç¿ëÀÚ°¡ ۸¦ ´©¸£¸é ±× Å͹̳ο¡¼­ ½ÇÇàÁßÀÎ ÇÁ·Î±×·¥¿¡°Ô Áï½Ã Àü´ÞµÇÁö ¾Ê°í, Å͹̳ΠÁö¿ª ¹öÆÛ°¡ Ű ´©¸§À» ÀúÀåÇϰí ÀÖ´Ù°¡ ENTER¸¦ ´­·¶À» ¶§¿¡ ÀúÀåÇϰí ÀÖ´ø °ªµéÀ» ¸ðµÎ Àü´ÞÇÏ°Ô µË´Ï´Ù. Å͹̳ο¡ ±âº»ÀûÀÎ ÁÙ´ÜÀ§ ÆíÁý±â°¡ µé¾î ÀÖ´Â °Í°ú ºñ½ÁÇÕ´Ï´Ù. bash$ stty -a speed 9600 baud; rows 36; columns 96; line = 0; intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = ; eol2 = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; ... isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt ij³ë´ÏÄà ¸ðµå¿¡¼­´Â Áö¿ª Å͹̳ΠÁÙ´ÜÀ§ ÆíÁý±â¿ë Ư¼öŰÀÇ ÀçÁ¤Àǰ¡ °¡´ÉÇÕ´Ï´Ù. bash$ cat > filexxx whaIfoo barhello world bash$ cat filexxx hello world bash$ bash$ wc -c < file 13 Å͹̳ÎÀ» Á¦¾îÇÏ´Â ÇÁ·Î¼¼½º´Â »ç¿ëÀÚ°¡ 26¹øÀÇ Å°¸¦ ´­·¶À½¿¡µµ ¿ÀÁ÷ 13°³ÀÇ ¹®ÀÚ(¾ËÆÄºª 12°³, ´º¶óÀÎ ÇÑ °³)¸¸ ¹Þ¾Ò½À´Ï´Ù. ³Íij³ë´ÏÄÃ("raw") ¸ðµå¿¡¼­´Â ´©¸£´Â ¸ðµç Ű(ctl-H°°Àº ÆíÁý¿ë Ư¼ö۵µ Æ÷ÇÔ)°¡ Á¦¾î ÇÁ·Î¼¼½º¿¡°Ô Áï½Ã Àü´ÞµË´Ï´Ù. bash ÇÁ·ÒÇÁÆ®´Â icanon ¿É¼Ç°ú echo ¿É¼ÇÀ» µÑ ´Ù ²¨¼­ ±âº»ÀûÀÎ ÁÙ ´ÜÀ§ ÆíÁýÀ» ´õ Á¤±³ÇÏ°Ô Á¦¾îÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, bash ÇÁ·ÒÇÁÆ® »ó¿¡¼­ ctl-AÀ» ´©¸£¸é ^A°¡ Å͹̳ο¡ ÂïÈ÷Áö ¾Ê°í bash°¡ \1 ¹®ÀÚ¸¦ Àаí ÇØ¼®Çؼ­ Ä¿¼­¸¦ ÁÙ Á¦ÀÏ Ã³À½À¸·Î À̵¿½ÃÄÑ ÁÝ´Ï´Ù. Stephane Chazelas tset Å͹̳Π¼¼ÆÃÀ» º¸¿©Áְųª ÃʱâÈ­ ÇÔ. sttyº¸´Ù ±â´ÉÀÌ ¶³¾îÁý´Ï´Ù. bash$ tset -r Terminal type is xterm-xfree86. Kill is control-U (^U). Interrupt is control-C (^C). setserial ½Ã¸®¾ó Æ÷Æ® ¸Å°³º¯¼ö¸¦ ¼¼Æ®Çϰųª º¸¿©ÁÝ´Ï´Ù. ·çÆ®·Î ½ÇÇà½ÃÄÑ¾ß ÇÏ°í º¸ÅëÀº ½Ã½ºÅÛ ¼Â¾÷ ½ºÅ©¸³Æ®¿¡¼­ ãÀ» ¼ö ÀÖ½À´Ï´Ù. # /etc/pcmcia/serial ½ºÅ©¸³Æ®¿¡¼­ ¹ßÃé: IRQ=`setserial /dev/$DEVICE | sed -e 's/.*IRQ: //'` setserial /dev/$DEVICE irq 0 ; setserial /dev/$DEVICE irq $IRQ getty, agetty Å͹̳οë ÃʱâÈ­ ÇÁ·Î¼¼½º°¡ getty³ª agetty¸¦ ½á¼­ »ç¿ëÀÚÀÇ ·Î±×ÀÎÀ» ¼³Á¤ÇØ ÁÝ´Ï´Ù. ÀÌ ¸í·É¾îµéÀº »ç¿ëÀÚÀÇ ½© ½ºÅ©¸³Æ®¿¡¼­ ¾²ÀÌÁö ¾Ê±â ¶§¹®¿¡ ½© ½ºÅ©¸³Æ®¿¡¼­ ÀÌ·± ±â´ÉÀ» ¾²·Á¸é stty¸¦ ¾²±â ¹Ù¶ø´Ï´Ù. mesg ÇöÀç »ç¿ëÀÚÀÇ Å͹̳ο¡ ´ëÇÑ ¾²±â Á¢±ÙÀ» Á¦¾îÇÕ´Ï´Ù. Á¢±ÙÀ» ¸ø ÇÏ°Ô ¼³Á¤µÇ¸é ³×Æ®¿öÅ©¿¡ ÀÖ´Â ´Ù¸¥ »ç¿ëÀÚ°¡ ÇöÀç Å͹̳ηΠwrite¸¦ ÇÏÁö ¸øÇÏ°Ô ÇØ ÁÝ´Ï´Ù. ÀÛÀº Á¤º¸: ¿©·¯ºÐÀÌ ÅØ½ºÆ® ÆÄÀÏÀ» ÆíÁýÇϰí Àִµ¥ °©ÀÚ±â ÇÇÀÚ ÁÖ¹® ¸Þ¼¼Áö°¡ ¶ß¸é ¾ÆÁÖ Â¥Áõ³¯ °ÍÀÔ´Ï´Ù. ´ÙÁß »ç¿ëÀÚ ³×Æ®¿öÅ©¿¡¼­´Â, ¹æÇعޱ⠽ÈÀ» ¶§ ¿©·¯ºÐÀÇ Å͹̳ο¡ ´ëÇÑ ¾²±â Á¢±ÙÀ» ¸·°í ½ÍÀº °æ¿ì°¡ »ý±æ°Ì´Ï´Ù. wall "write all"ÀÇ ¾Õ±ÛÀÚ¸¦ µû¼­ wallÀÌ µÈ ÀÌ ¸í·É¾î´Â ÇöÀç ·Î±×ÀÎ µÇ¾î ÀÖ´Â ¸ðµç »ç¿ëÀÚ¿¡°Ô ¸Þ¼¼Áö¸¦ ³¯¸³´Ï´Ù. ¿ø·¡´Â À¯¿ëÇÑ ½Ã½ºÅÛ °ü¸®ÀÚ¿ë µµ±¸ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ½Ã½ºÅÛ¿¡ ¹®Á¦°¡ »ý°Ü¼­ Àá±ñ µ¿¾È ´Ù¿î ½ÃÄÑ¾ß ÇÒ Çʿ䰡 »ý°åÀ» ¶§ ¸ðµç »ç¿ëÀڵ鿡°Ô °æ°í¸¦ ÇÒ ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù(¿¹ 17-2 Âü°í). bash$ wall System going down for maintenance in 5 minutes! Broadcast message from bozo (pts/1) Sun Jul 8 13:53:27 2001... System going down for maintenance in 5 minutes! Âü°í: mesg·Î ¾²±â°¡ ¸·ÇôÀÖ´Â Å͹̳ÎÀº wall ¸Þ¼¼Áö¸¦ ¹ÞÀ» ¼ö ¾ø½À´Ï´Ù. dmesg ½Ã½ºÅÛ ºÎÆÃ ¸Þ¼¼Áö¸¦ Ç¥ÁØÃâ·ÂÀ¸·Î º¸¿© ÁÝ´Ï´Ù. µð¹ö±ë ÇÒ ¶§, ¾î¶² µð¹ÙÀ̽º µå¶óÀ̹ö°¡ ¼³Ä¡µÆ´ÂÁö È®ÀÎÇÒ ¶§, »ç¿ëÁßÀÎ ½Ã½ºÅÛ ÀÎÅÍ·´Æ®°¡ ¹«¾ùÀÎÁö È®ÀÎÇÒ ¶§ ÆíÇÏ°Ô ¾µ ¼ö ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ®¿¡¼­ dmesgÀÇ Ãâ·ÂÀ» grepÀ̳ª sed, awk·Î ÆÄ½ÌÇØ¼­ ¾µ ¼ö ÀÖ½À´Ï´Ù. Á¤º¸¹× Åë°è uname ½Ã½ºÅÛ »ç¾ç(OS, Ä¿³Î ¹öÀüµî)À» Ç¥ÁØÃâ·ÂÀ¸·Î º¸¿©ÁÝ´Ï´Ù. -a ¿É¼ÇÀ» ÁÖ¸é ½Ã½ºÅÛ Á¤º¸¸¦ ¾ÆÁÖ ÀÚ¼¼ÇÏ°Ô º¸¿©ÁÖ°í(¿¹ 12-4 Âü°í), -s ¿É¼ÇÀ» ÁÖ¸é OS Á¾·ù¸¸ º¸¿©ÁÝ´Ï´Ù. bash$ uname -a Linux localhost.localdomain 2.2.15-2.5.0 #1 Sat Feb 5 00:13:43 EST 2000 i686 unknown bash$ uname -s Linux arch ½Ã½ºÅÛ ¾ÆÅ°ÅØÃĸ¦ º¸¿©ÁÝ´Ï´Ù. uname -m °ú µ¿ÀÏÇÑ ¸í·É¾îÀÔ´Ï´Ù. ¿¹ 10-24¸¦ Âü°íÇϼ¼¿ä. bash$ arch i686 bash$ uname -m i686 lastcomm /var/account/pacct ÆÄÀÏ¿¡ ÀúÀåµÅ ÀÖ´Â ÀÌÀü ¸í·É¾îµé¿¡ ´ëÇÑ Á¤º¸¸¦ ¾Ë·ÁÁÝ´Ï´Ù. ¿É¼ÇÀ¸·Î ¸í·É¾î¿Í »ç¿ëÀÚ À̸§À» ÁöÁ¤ÇØ ÁÙ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸í·É¾î´Â GNU °èÁ¤ À¯Æ¿¸®Æ¼(accounting utility)ÁßÀÇ ÇϳªÀÔ´Ï´Ù. lastlog ½Ã½ºÅÛÀÇ ¸ðµç »ç¿ëÀÚ°¡ ¸¶Áö¸·À¸·Î ·Î±×ÀÎÇÑ ½Ã°£À» º¸¿©ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î´Â /var/log/lastlog ÆÄÀÏÀ» ÂüÁ¶ÇÕ´Ï´Ù. bash$ lastlog root tty1 Fri Dec 7 18:43:21 -0700 2001 bin **Never logged in** daemon **Never logged in** ... bozo tty1 Sat Dec 8 21:14:29 -0700 2001 bash$ lastlog | grep root root tty1 Fri Dec 7 18:43:21 -0700 2001 °æ°í /var/log/lastlog ÆÄÀÏ¿¡ ÀÐ±â ÆÛ¹Ì¼ÇÀÌ ¾ø´Â »ç¿ëÀÚ°¡ ÀÌ ¸í·É¾î¸¦ ½ÇÇà½ÃŰ¸é ½ÇÆÐÇÕ´Ï´Ù. lsof ÇöÀç ¿­·Á ÀÖ´Â ÆÄÀϵéÀ» º¸¿©ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î´Â ÇöÀç ¿­·Á ÀÖ´Â ¸ðµç ÆÄÀϵ鿡 ´ëÇÑ ÀÚ¼¼ÇÑ Ç¥¿Í °¢°¢ÀÇ ÆÄÀÏ¿¡ ´ëÇÑ ¼ÒÀ¯ÀÚ, Å©±â, °ü·Ã ÇÁ·Î¼¼½ºµîÀÇ Á¤º¸¸¦ º¸¿© ÁÝ´Ï´Ù. ´ç¿¬È÷, lsofÀÇ Ãâ·ÂÀº ÆÄÀÌÇÁ¸¦ ÅëÇØ grep³ª awk·Î ³Ñ°Ü¼­ ÆÄ½ÌÇØ¼­ ºÐ¼®ÇÒ ¼ö ÀÖ½À´Ï´Ù. bash$ lsof COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME init 1 root mem REG 3,5 30748 30303 /sbin/init init 1 root mem REG 3,5 73120 8069 /lib/ld-2.1.3.so init 1 root mem REG 3,5 931668 8075 /lib/libc-2.1.3.so cardmgr 213 root mem REG 3,5 36956 30357 /sbin/cardmgr ... strace ½Ã½ºÅÛ Äݰú ½Ã±×³ÎÀ» ÃßÀûÇØ¼­ Áø´ÜÇÏ°í µð¹ö±ëÇØ ÁÖ´Â µµ±¸ÀÔ´Ï´Ù. °¡Àå °£´ÜÇÏ°Ô ½ÇÇà½ÃŰ´Â ¹æ¹ýÀº strace COMMAND¶ó°í Ä¡´Â °ÍÀÔ´Ï´Ù. bash$ strace df execve("/bin/df", ["df"], [/* 45 vars */]) = 0 uname({sys="Linux", node="bozo.localdomain", ...}) = 0 brk(0) = 0x804f5e4 ... ÀÌ ¸í·É¾î´Â ¸®´ª½º¿¡¼­ÀÇ truss ÀÔ´Ï´Ù. free ¸Þ¸ð¸®¿Í ij½¬ »ç¿ë·®À» ÅÇÀÌ µé¾î°£ ÇüÅ·Πº¸¿©ÁÝ´Ï´Ù. ÀÌ ¸í·É¾îÀÇ Ãâ·ÂÀº grepÀ̳ª, awk, PerlÀ» ½á¼­ ÆÄ½ÌÇϱ⿡ ¾Ë¸ÂÀº ÇüÅÂÀÔ´Ï´Ù. procinfo ¸í·É¾î´Â free°¡ º¸¿©ÁÖ´Â Á¤º¸ À̿ܿ¡ ´õ ¸¹Àº Á¤º¸µµ º¸¿©ÁÝ´Ï´Ù. bash$ free total used free shared buffers cached Mem: 30504 28624 1880 15820 1608 16376 -/+ buffers/cache: 10640 19864 Swap: 68540 3128 65412 »ç¿ëÇÏÁö ¾Ê´Â ·¥ ¿ë·®À» º¸·Á¸é: bash$ free | grep Mem | awk '{ print $4 }' 1880 procinfo /proc °¡»ó ÆÄÀϽýºÅÛ¿¡¼­ ¿©·¯ Á¤º¸¿Í Åë°è¸¦ »Ì¾Æ³»¼­ ±¤¹üÀ§Çϰí ÀÚ¼¼ÇÏ°Ô º¸¿© ÁÝ´Ï´Ù. bash$ procinfo | grep Bootup Bootup: Wed Mar 21 15:15:50 2001 Load average: 0.04 0.21 0.34 3/47 6829 lsdev ¼³Ä¡µÈ Çϵå¿þ¾î µð¹ÙÀ̽ºÀÇ ¸ñ·ÏÀ» º¸¿©ÁÝ´Ï´Ù. bash$ lsdev Device DMA IRQ I/O Ports ------------------------------------------------ cascade 4 2 dma 0080-008f dma1 0000-001f dma2 00c0-00df fpu 00f0-00ff ide0 14 01f0-01f7 03f6-03f6 ... du µð½ºÅ©ÀÇ ÆÄÀÏ »ç¿ë·®À» Àç±ÍÀûÀ¸·Î º¸¿©ÁÝ´Ï´Ù. Ưº°È÷ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ÇöÀç µð·ºÅ丮¿¡ ´ëÇØ¼­ µ¿ÀÛÇÕ´Ï´Ù. bash$ du -ach 1.0k ./wi.sh 1.0k ./tst.sh 1.0k ./random.file 6.0k . 6.0k total df ÆÄÀϽýºÅÛ »ç¿ë·®À» ÅÇÀÌ µé¾î°£ ÇüÅ·Πº¸¿© ÁÝ´Ï´Ù. bash$ df Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda5 273262 92607 166547 36% / /dev/hda8 222525 123951 87085 59% /home /dev/hda7 1408796 1075744 261488 80% /usr stat ÁÖ¾îÁø ÆÄÀÏ(µð·ºÅ丮³ª µð¹ÙÀ̽º ÆÄÀϵµ)¿¡ ´ëÇØ¼­ ÀÚ¼¼ÇÑ Åë°è(statistics)¸¦ ¾Ë·ÁÁÝ´Ï´Ù. bash$ stat test.cru File: "test.cru" Size: 49970 Allocated Blocks: 100 Filetype: Regular File Mode: (0664/-rw-rw-r--) Uid: ( 501/ bozo) Gid: ( 501/ bozo) Device: 3,8 Inode: 18185 Links: 1 Access: Sat Jun 2 16:40:24 2001 Modify: Sat Jun 2 16:40:24 2001 Change: Sat Jun 2 16:40:24 2001 Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏ¿¡ ´ëÇØ¼­ statÀ» ½ÇÇà½ÃŰ¸é ¿¡·¯ ¸Þ¼¼Áö¸¦ ³À´Ï´Ù. bash$ stat nonexistent-file nonexistent-file: No such file or directory vmstat °¡»ó ¸Þ¸ð¸®(virtual memory) Åë°è(statistics)¸¦ º¸¿©ÁÜ. bash$ vmstat procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 0 0 0 0 11040 2636 38952 0 0 33 7 271 88 8 3 89 netstat ¶ó¿ìÆÃ Å×À̺íÀ̳ª Ȱ¼ºÈ­µÇ¾î ÀÖ´Â ³×Æ®¿öÅ© ¿¬°á°°Àº ³×Æ®¿öÅ© Åë°è¿Í Á¤º¸¸¦ º¸¿© ÁÝ´Ï´Ù. ÀÌ À¯Æ¿¸®Æ¼´Â /proc/net(28Àå)¿¡¼­ Á¤º¸¸¦ ¾ò¾î ¿É´Ï´Ù. ¿¹ 28-2À» Âü°íÇϼ¼¿ä. uptime ½Ã½ºÅÛÀÌ ¾ó¸¶³ª ¿À·§µ¿¾È µ¹°í ÀÖ¾ú´ÂÁö °ü·Ã Åë°è¿Í ÇÔ²² º¸¿©ÁÝ´Ï´Ù. bash$ uptime 10:28pm up 1:57, 3 users, load average: 0.17, 0.34, 0.27 hostname ½Ã½ºÅÛÀÇ È£½ºÆ®¸íÀ» º¸¿©ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î´Â /etc/rc.d ¿¡ µé¾î ÀÖ´Â ¼Â¾÷ ½ºÅ©¸³Æ®¿¡¼­ È£½ºÆ®¸íÀ» ¼³Á¤ÇØ ÁÝ´Ï´Ù(/etc/rc.d/rc.sysinitÀ̳ª ºñ½ÁÇÑ ½ºÅ©¸³Æ®). uname -n°ú µ¿ÀÏÇÑ ¸í·É¾îÀÌ°í ³»ºÎ º¯¼öÀÎ $HOSTNAME°ú ¿¬°üÀÌ ÀÖ½À´Ï´Ù. bash$ hostname localhost.localdomain bash$ echo $HOSTNAME localhost.localdomain hostid È£½ºÆ® ¸Ó½Å¿¡ ´ëÇÑ 32ºñÆ® 16Áø¼ö ±¸ºÐÀÚ¸¦ ¿¡ÄÚÇØ ÁÝ´Ï´Ù. bash$ hostid 7f0100 Âü°í: ÀÌ ¸í·É¾î´Â ƯÁ¤ ½Ã½ºÅÛ¿¡ ´ëÇØ "À¯ÀÏÇÑ"(unique) ½Ã¸®¾ó ¼ýÀÚ¸¦ ±¸ÇØÁÝ´Ï´Ù. ¸î¸î »ó¾÷¿ë Á¦Ç°ÀÇ µî·Ï °úÁ¤¿¡¼­ ÀÌ ¼ýÀÚ¸¦ ÀÌ¿ëÇØ »ç¿ëÀÚ ¶óÀ̼¾½º¸¦ ¸¸µé¾î ³À´Ï´Ù. ÇÏÁö¸¸ ºÒÇàÇϰԵµ hostid´Â ¿ÀÁ÷ ³×Æ®¿öÅ© ÁÖ¼Ò¸¦ µÎ ¹ÙÀÌÆ® ´ÜÀ§·Î µÚÁý¾î 16Áø¼ö·Î ¸®ÅÏÇØ ÁÝ´Ï´Ù. ³×Æ®¿öÅ©¿¡ ¹°¸®Áö ¾ÊÀº ¸®´ª½º ¸Ó½ÅÀÇ ÀüÇüÀûÀÎ ³×Æ®¿öÅ© ÁÖ¼Ò´Â /etc/hosts¿¡¼­ ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. bash$ cat /etc/hosts 127.0.0.1 localhost.localdomain localhost °ø±³·Ó°Ôµµ 127.0.0.1À» µÎ ¹ÙÀÌÆ® ´ÜÀ§·Î µÚÁýÀ¸¸é 0.127.1.0ÀÌ µÇ°í À̸¦ 16Áø¼ö·Î º¯È¯Çϸé 007f0100ÀÌ µÇ´Âµ¥ ÀÌ´Â À§¿¡¼­ »ìÆìº» hostid°¡ ¸®ÅÏÇÏ´Â °ª°ú Á¤È®È÷ ÀÏÄ¡ÇÕ´Ï´Ù. °á±¹ µ¿ÀÏÇÑ hostid¸¦ °®´Â ¸®´ª½º ¸Ó½ÅÀÌ ¼ö ¹é¸¸ °³°¡ Á¸ÀçÇÏ°Ô µÇ´Â °ÍÀÔ´Ï´Ù. ½Ã½ºÅÛ ·Î±× logger »ç¿ëÀÚ°¡ ¸¸µé¾î³½ ¸Þ¼¼Áö¸¦ ½Ã½ºÅÛ ·Î±×(/var/log/messages)¿¡ Ãß°¡ ½Ãŵ´Ï´Ù. ÀÌ ¸í·É¾î´Â ÀÏ¹Ý »ç¿ëÀÚµµ ¾µ ¼ö ÀÖ½À´Ï´Ù. logger Experiencing instability in network connection at 23:10, 05/21. # ÀÚ, ÀÌÁ¦ 'tail /var/log/messages' ¶ó°í ÇØ º¸¼¼¿ä. ½ºÅ©¸³Æ®¿¡ logger ¸í·É¾î¸¦ ³Ö¾î¼­ µð¹ö±ë Á¤º¸¸¦ /var/log/messages¿¡ ¾µ ¼ö ÀÖ½À´Ï´Ù. logger -t $0 -i Logging at line "$LINENO". # "-t" ¿É¼ÇÀº logger ¿£Æ®¸®¿ë ű׸¦ ÁöÁ¤ÇÕ´Ï´Ù. # "-i" ¿É¼ÇÀº ÇÁ·Î¼¼½º ID¸¦ ÁöÁ¤ÇÕ´Ï´Ù. # tail /var/log/message # ... # Jul 7 20:48:58 localhost ./test.sh[1712]: Logging at line 3. logrotate ÀÌ À¯Æ¿¸®Æ¼´Â ½Ã½ºÅÛ ·Î±× ÆÄÀϵéÀ» Àû´çÇÏ°Ô ·ÎÅ×ÀÌÆ® ½Ã۰í, ¾ÐÃàÇϰí, Áö¿ì°í, ¸ÞÀÏÀ» º¸³»´Â ÀϵéÀ» ó¸®ÇØ ÁÝ´Ï´Ù. º¸Åë crondÀº logrotate¸¦ °¡Àå ±âº»ÀûÀÎ ÇÏ·ç Àϰú·Î »ï½À´Ï´Ù. /etc/logrotate.conf¿¡ Àû´çÇÑ ³»¿ëÀ» Àû¾îÁÖ¸é ½Ã½ºÅÛ Àüü ·Î±×»Ó¸¸ ¾Æ´Ï¶ó °³ÀÎ¿ë ·Î±× ÆÄÀÏÀ» °ü¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÛ¾÷ Á¦¾î ps ÇÁ·Î¼¼½º Åë°è(Process Statistics): ÇöÀç ½ÇÇàÁßÀÎ ÇÁ·Î¼¼½ºµéÀ» »ç¿ëÀÚ¿Í PID(ÇÁ·Î¼¼½º ¾ÆÀ̵ð)¿¡ ÀÇÇØ¼­ º¸¿©ÁÜ. º¸ÅëÀº ax ¿É¼ÇÀ» Á༭ ºÎ¸£°í, grepÀ̳ª sed·Î ÆÄÀÌÇÁ¸¦ °É¾î¼­ ƯÁ¤ ÇÁ·Î¼¼½º¸¦ ã½À´Ï´Ù(¿¹ 11-8¿Í ¿¹ 28-1 Âü°í). bash$ ps ax | grep sendmail 295 ? S 0:00 sendmail: accepting connections on port 25 pstree ÇöÀç ½ÇÇàÁßÀÎ ÇÁ·Î¼¼½º¸¦ "³ª¹«"(tree) ÇüÅ·Πº¸¿© ÁÝ´Ï´Ù. -p ¿É¼ÇÀ» ÁÖ¸é ÇÁ·Î¼¼½º À̸§»Ó¸¸ ¾Æ´Ï¶ó PID±îÁö º¸¿© ÁÝ´Ï´Ù. top cpu¸¦ ÁýÁßÀûÀ¸·Î »ç¿ëÇÏ´Â ÇÁ·Î¼¼½º¸¦ Áß½ÉÀ¸·Î ÃֽŠÁ¤º¸¸¦ °è¼Ó º¸¿©ÁÝ´Ï´Ù. -b ¿É¼ÇÀº °á°ú¸¦ ÅØ½ºÆ® ¸ðµå·Î º¸¿©Áֱ⠶§¹®¿¡ ÆÄ½ÌÀ» Çϰųª ½ºÅ©¸³Æ®¿¡¼­ Á¢±ÙÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. bash$ top -b 8:30pm up 3 min, 3 users, load average: 0.49, 0.32, 0.13 45 processes: 44 sleeping, 1 running, 0 zombie, 0 stopped CPU states: 13.6% user, 7.3% system, 0.0% nice, 78.9% idle Mem: 78396K av, 65468K used, 12928K free, 0K shrd, 2352K buff Swap: 157208K av, 0K used, 157208K free 37244K cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 848 bozo 17 0 996 996 800 R 5.6 1.2 0:00 top 1 root 8 0 512 512 444 S 0.0 0.6 0:04 init 2 root 9 0 0 0 0 SW 0.0 0.0 0:00 keventd ... nice ¹é±×¶ó¿îµå ÀÛ¾÷ÀÇ ¿ì¼±¼øÀ§¸¦ ¹Ù²ãÁÝ´Ï´Ù. ¿ì¼±¼øÀ§´Â 19(Á¦ÀÏ ³·À½)¿¡¼­ -20(Á¦ÀÏ ³ôÀ½)±îÁö Àε¥, ¿ÀÁ÷ root¸¸ÀÌ À½¼ö(³ôÀº) ¿ì¼±¼øÀ§¸¦ ÁÙ ¼ö ÀÖ½À´Ï´Ù. °ü·Ã ¸í·É¾î·Î´Â renice, snice, skillÀÌ ÀÖ½À´Ï´Ù. nohup »ç¿ëÀÚ°¡ ·Î±× ¾Æ¿ôÀ» ÇÏ´õ¶ó°í ¸í·É¾î°¡ °è¼Ó µ¹°Ô ÇØ ÁÝ´Ï´Ù. ¸í·É¾î¿¡ &¸¦ ºÙ¿© ½ÇÇàÇÏÁö ¾ÊÀ¸¸é Æ÷±×¶ó¿îµå·Î ½ÇÇàÀÌ µÉ °ÍÀÔ´Ï´Ù. nohupÀ» ½ºÅ©¸³Æ®¿¡¼­ ¾µ ¶§´Â, °í¾Æ ÇÁ·Î¼¼½º³ª Á»ºñ ÇÁ·Î¼¼½º°¡ »ý±âÁö ¾Êµµ·Ï wait°ú °°ÀÌ ½á¾ß ÇÕ´Ï´Ù. pidof ½ÇÇàÁßÀÎ ÀÛ¾÷ÀÇ ÇÁ·Î¼¼½º ID(pid)¸¦ ½Äº°ÇØ ÁÝ´Ï´Ù. killÀ̳ª renice°°Àº ÀÛ¾÷ Á¦¾î ¸í·É¾îµéÀº ÇÁ·Î¼¼½º À̸§ÀÌ ¾Æ´Ï¶ó pid¿¡ ´ëÇØ µ¿ÀÛÇϱ⠶§¹®¿¡ Á¾Á¾ pid·Î ±¸ºÐÇÒ Çʿ䰡 »ý±é´Ï´Ù. pidof ¸í·É¾î´Â ³»ºÎ º¯¼öÀÎ $PPID¿Í °ÅÀÇ ½ÖÀ» ÀÌ·ì´Ï´Ù. bash$ pidof xclock 880 ¿¹ 13-4. pidof ·Î ÇÁ·Î¼¼½º¸¦ Á×À̱â #!/bin/bash # kill-process.sh NOPROCESS=2 process=xxxyyyzzz # Á¸ÀçÇÏÁö ¾Ê´Â ÇÁ·Î¼¼½º¸¦ °¡Áö°í, # ±×³É µ¥¸ð¿ëÀÓ... # ... ½ÇÁ¦·Î µ¹°í ÀÖ´Â ¾î¶² ÇÁ·Î¼¼½ºµµ Á×ÀÌ·Á°í ÇÏ´Â°Ô ¾Æ´Ï´Ï±î. # # ÇÏÁö¸¸, ¿¹¸¦ µé¾î ÀÎÅͳݿ¡¼­ ·Î±×¿ÀÇÁÇÏ°í ½Í´Ù¸é #+ process=pppd #+ µË´Ï´Ù. t=`pidof $process` # $processÀÇ pid(ÇÁ·Î¼¼½º ID)¸¦ ã°í, # 'kill'Àº ÇÁ·Î±×·¥ À̸§ÀÌ ¾Æ´Ï¶ó pid¸¦ ¾²±â ¶§¹®¿¡ if [ -z "$t" ] # ÇØ´ç ÇÁ·Î¼¼½º°¡ ¾ø´Ù¸é 'pidof'´Â ³ÎÀ» ¸®ÅÏÇÔ. then echo "$process ´Â ÇöÀç ½ÇÇàÁßÀÌ ¾Æ´Ï¹Ç·Î ±×³É Á¾·áÇÕ´Ï´Ù." exit $NOPROCESS fi kill $t # Àß Á×Áö ¾Ê´Â ÇÁ·Î¼¼½º¶ó¸é 'kill -9'¶ó°í ÇØ¾ß ÇÒÁöµµ ¸ð¸¨´Ï´Ù. # Á×Áö ¾Ê°Ô µÅ ÀÖ´Â ÇÁ·Î¼¼½ºÀϼöµµ Àֱ⠶§¹®¿¡ # ´Ù½Ã ÇÑ ¹ø " t=`pidof $process` " ·Î È®ÀÎÇØ º¼ Çʿ䰡 ÀÖ½À´Ï´Ù. # À§ Àüü ½ºÅ©¸³Æ®´Â # kill $(pidof -x process_name) # À̶ó°í ÇÒ ¼öµµ ÀÖ°ÚÀ¸³ª ±×·¯¸é ±³À°ÀûÀÌÁö´Â ¾ÊÀº°Í °°±º¿ä. exit 0 fuser ¾î¶² ÆÄÀÏÀ̳ª, ÆÄÀÏ ÁýÇÕ, µð·ºÅ丮¿¡ Á¢±ÙÇϰí ÀÖ´Â ÇÁ·Î¼¼½º¸¦ PID·Î ½Äº°ÇØ ÁÝ´Ï´Ù. -k ¿É¼ÇÀ» ¾²¸é ÇØ´ç ÇÁ·Î¼¼½º¸¦ Á×ÀÏ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸í·É¾î´Â ½Ã½ºÅÛ º¸¾È Â÷¿ø¿¡¼­ ¾ÆÁÖ Èï¹Ì·Î¿î ±¸ÇöÀε¥ ÁÖ·Î ½ºÅ©¸³Æ®¿¡¼­ ¾²¿© ½Ã½ºÅÛ ¼­ºñ½º¿¡ ´ëÇØ Çã°¡ ¹ÞÁö ¾ÊÀº »ç¿ëÀÚÀÇ Á¢±ÙÀ» ¸·´Â ¿ëµµ·Î ¾²ÀÔ´Ï´Ù. crond ½Ã½ºÅÛ °ü¸®¿ë ½ºÄÉÁì·¯ ÇÁ·Î±×·¥À¸·Î¼­, ½Ã½ºÅÛ ·Î±× ÆÄÀÏÀ» Á¤¸®Çϰí Áö¿î´Ù°Å³ª slocate µ¥ÀÌŸ º£À̽º¸¦ ¾÷µ¥ÀÌÆ® ÇÏ´Â µîÀÇ ÀÏÀ» ÇØ ÁÝ´Ï´Ù. atÀÇ ·çÆ® »ç¿ëÀÚ ¹öÀü¿ë ¸í·É¾îÀÔ´Ï´Ù(¹°·Ð, °¢ »ç¿ëÀÚ´Â crontab ¸í·É¾î¸¦ ½á¼­ ÀڽŸ¸ÀÇ crontab ÆÄÀÏÀ» °¡Áú¼öµµ ÀÖ½À´Ï´Ù). µ¥¸óÀ¸·Î µ¹¸é¼­ /etc/crontabÀÇ ³»¿ëµéÀ» ½ºÄÉÁì¿¡ µû¶ó ½ÇÇà½ÃÄÑ ÁÝ´Ï´Ù. ÇÁ·Î¼¼½º Á¦¾î¹× ºÎÆÃ init init ¸í·É¾î´Â ¸ðµç ÇÁ·Î¼¼½ºÀÇ ºÎ¸ð ÇÁ·Î¼¼½º·Î¼­, ½Ã½ºÅÛ ºÎÆÃ °úÁ¤ÀÇ Á¦ÀÏ ¸¶Áö¸·¿¡ ºÒ¸®¸é¼­ /etc/inittabÀ» Àо ½Ã½ºÅÛÀÇ ·±·¹º§À» °áÁ¤ÇÕ´Ï´Ù. ¿ÀÁ÷ ·çÆ®¸¸ÀÌ º°¸íÀÎ telinitÀ¸·Î ºÎ¸¦ ¼ö ÀÖ½À´Ï´Ù. telinit init¸¦ °¡¸£Å°´Â ½Éº¼¸¯¸µÅ©·Î¼­, ½Ã½ºÅÛ ·±·¹º§À» ¹Ù²Ü ¶§ ¾²´Âµ¥ º¸ÅëÀº ½Ã½ºÅÛ °ü¸®³ª ±ä±ÞÇÏ°Ô ÆÄÀϽýºÅÛÀ» ¼ö¸®ÇØ¾ß ÇÒ ¶§ ¾¹´Ï´Ù. ¿ÀÁ÷ ·çÆ®¸¸ ÀÌ ¸í·É¾î¸¦ ¾µ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸í·É¾î´Â ¾ÆÁÖ À§ÇèÇϱ⠶§¹®¿¡ ¾²±â Àü¿¡ ÀÌ ¸í·É¾î¸¦ Àß ÀÌÇØÇϰí ÀÖ¾î¾ß ÇÕ´Ï´Ù! runlevel ÇöÀç¿Í ¹Ù·Î ÀüÀÇ ·±·¹º§À», ½Ã½ºÅÛÀÌ Á¤Áö »óÅÂÀÎÁö(·±·¹º§ 0), ´ÜÀÏ »ç¿ëÀÚ ¸ðµåÀÎÁö(1), ´ÙÁß »ç¿ëÀÚ ¸ðµåÀÎÁö(2³ª 3), X À©µµ¿ì ¸ðµåÀÎÁö(5), ¸®ºÎÆÃ ÁßÀÎÁö(6)µîÀ¸·Î º¸¿© ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î´Â /var/run/utmp ÆÄÀÏÀ» ÅëÇØ Á¤º¸¸¦ ¾ò¾î ¿É´Ï´Ù. halt, shutdown, reboot º¸Åë ½Ã½ºÅÛ Àü¿øÀ» ²ô±â Àü¿¡ ½Ã½ºÅÛÀ» Á¤Áö½ÃŰ´Â ¸í·É¾îµé. ³×Æ®¿öÅ© ifconfig ³×Æ®¿öÅ© ÀÎÅÍÆäÀ̽º ¼³Á¤¹× Æ©´× À¯Æ¿¸®Æ¼. ÀÌ ¸í·É¾î´Â ºÎÆÃ½Ã ÀÎÅÍÆäÀ̽º¸¦ ¼³Á¤ÇÒ ¶§³ª ¸®ºÎÆÃ¶§ ÀÎÅÍÆäÀ̽º¸¦ ³»¸®±â À§ÇØ ¾²ÀÔ´Ï´Ù. # /etc/rc.d/init.d/network ÀÇ ÀϺκР# ... # ³×Æ®¿öÅ·ÀÌ °¡´ÉÇÑÁö È®ÀÎ. [ ${NETWORKING} = "no" ] && exit 0 [ -x /sbin/ifconfig ] || exit 0 # ... for i in $interfaces ; do if ifconfig $i 2>/dev/null | grep -q "UP" >/dev/null 2>&1 ; then action "Shutting down interface $i: " ./ifdown $i boot fi # "grep"ÀÇ GNU Àü¿ëÀÎ "-q" ¿É¼ÇÀº "quiet"¸¦ ¶æÇϰí, ¾î¶² Ãâ·Âµµ ÇÏÁö ¾Ê°Ô ÇÕ´Ï´Ù. # µû¶ó¼­ Ãâ·ÂÀ» /dev/null ·Î ÀçÁöÇâ ÇÏ´Â °ÍÀÌ ²À ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù. # ... echo "ÇöÀç µ¿ÀÛÁßÀÎ µð¹ÙÀ̽º:" echo `/sbin/ifconfig | grep ^[a-z] | awk '{print $1}'` # ^^^^^ globbing À» ¸·±â À§ÇØ Äõ¿ìÆ® ½ÃÄÑ¾ß ÇÕ´Ï´Ù. # ´ÙÀ½µµ ¿ª½Ã µ¿ÀÛÇÕ´Ï´Ù. # echo $(/sbin/ifconfig | awk '/^[a-z]/ { print $1 })' # echo $(/sbin/ifconfig | sed -e 's/ .*//') # S.C.°¡ ÁÖ¼®À» ´õ ³Ö¾î Áá½À´Ï´Ù. °í¸¶¿ö¿ä. ¿¹ 30-5 Âü°í. route Ä¿³Î ¶ó¿ìÆÃ Å×À̺í Á¤º¸¸¦ º¸°Å³ª ¹Ù²Ü ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù. bash$ route Destination Gateway Genmask Flags MSS Window irtt Iface pm3-67.bozosisp * 255.255.255.255 UH 40 0 0 ppp0 127.0.0.0 * 255.0.0.0 U 40 0 0 lo default pm3-67.bozosisp 0.0.0.0 UG 40 0 0 ppp0 chkconfig ³×Æ®¿öÅ© ¼³Á¤À» Ã¼Å©ÇØÁÜ. ÀÌ ¸í·É¾î´Â /etc/rc?.d µð·ºÅ丮¿¡ µé¾îÀÖ°í ºÎÆÃ½Ã ½ÃÀ۵Ǵ ³×Æ®¿öÅ© ¼­ºñ½ºµéÀ» º¸¿©ÁÖ°í °ü¸®ÇØ ÁÝ´Ï´Ù. ¿ø·¡´Â IRIX¿¡ ÀÖ´ø °ÍÀ» ·¹µåÇÞ ¸®´ª½º°¡ Æ÷ÆÃÇÑ °ÍÀ¸·Î ´Ù¸¥ ¸®´ª½º ¹èÆ÷ÆÇ¿¡¼­´Â ±âº» ¼³Ä¡¿¡ ¼ÓÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù. bash$ chkconfig --list atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off rwhod 0:off 1:off 2:off 3:off 4:off 5:off 6:off ... tcpdump ³×Æ®¿öÅ© ÆÐŶ "½º´ÏÆÛ". ÁÖ¾îÁø ±âÁØ¿¡ ¸Â´Â ÆÐŶ Çì´õÀÇ ´ýÇÁ¸¦ ¶°¼­ ³×Æ®¿öÅ© Æ®·¡ÇÈÀ» ºÐ¼®ÇÏ°í ¹®Á¦Á¡À» ÇØ°áÇÒ ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù. bozoville ¿Í caduceus µÎ È£½ºÆ®°£ÀÇ IP ÆÐŶ Æ®·¡ÇÈÀ» ´ýÇÁ: bash$ tcpdump ip host bozoville and caduceus ´ç¿¬È÷ tcpdumpÀÇ Ãâ·ÂÀº ¾Õ¿¡¼­ ³íÀÇÇß´ø ÅØ½ºÆ® ó¸® À¯Æ¿¸®Æ¼µéÀ» ÀÌ¿ëÇØ¼­ ÆÄ½ÌÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÆÄÀϽýºÅÛ mount ÆÄÀϽýºÅÛÀ» ¸¶¿îÆ®ÇØ ÁÝ´Ï´Ù. º¸ÅëÀº Ç÷ÎÇdzª ½Ãµð·Ò °°Àº ¿ÜºÎ µð¹ÙÀ̽º¿¡ ´ëÇØ¼­ ¾²ÀÔ´Ï´Ù. /etc/fstab¿¡ °¡´ÉÇÑ ÆÄÀϽýºÅÛÀ̳ª ÆÄƼ¼Ç, µð¹ÙÀ̽º, ¿É¼ÇµîÀ» Àû¾î ³õÀ¸¸é ÀÚµ¿À̳ª ¼öµ¿À¸·Î ¸¶¿îÆ®¸¦ ÆíÇÏ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. /etc/mtab ÆÄÀÏÀº /proc °°Àº °¡»ó ÆÄÀϽýºÅÛµµ Æ÷ÇÔÇØ¼­ ÇöÀç ¸¶¿îÆ® µÇ¾î ÀÖ´Â ÆÄÀÏ ½Ã½ºÅÛÀ» º¸¿© ÁÝ´Ï´Ù. mount -a ´Â /etc/fstab¿¡ µé¾î ÀÖ´Â ÆÄÀÏ ½Ã½ºÅÛ°ú ÆÄƼ¼ÇÁß¿¡ noauto ¿É¼ÇÀÌ ÀÖ´Â Ç׸ñ¸¸ »©°í ¸ðµÎ ¸¶¿îÆ® ÇØ ÁÝ´Ï´Ù. ºÎÆÃµÉ ¶§, ¸ðµç ÆÄƼ¼ÇÀÌ ¸¶¿îÆ® µÇµµ·Ï /etc/rc.d µð·ºÅ丮¿¡ µé¾î ÀÖ´Â ½Ã½ºÅÛ ±¸µ¿ ½ºÅ©¸³Æ®(rc.sysinitÀ̳ª ºñ½ÁÇÑ °Í)¿¡¼­ ÀÌ ¸í·É¾î¸¦ ºÎ¸¨´Ï´Ù. mount -t iso9660 /dev/cdrom /mnt/cdrom # CDROM ¸¶¿îÆ® mount /mnt/cdrom # /mnt/cdrom ÀÌ /etc/fstab ¿¡ µé¾î ÀÖÀ» °æ¿ì ª°Ô ºÎ¸£±â ÀÌ ´ÙÀç´Ù´ÉÇÑ ¸í·É¾î´Â º¸Åë ÆÄÀÏÀ» ºí·° µð¹ÙÀ̽º¿¡ Á¸ÀçÇÏ´Â ÆÄÀÏ ½Ã½ºÅÛó·³ ¸¶¿îÆ® ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·± ´É·ÂÀº ·çÇÁ¹é µð¹ÙÀ̽º(loopback device)¶ó°í ÇÏ´Â ÆÄÀÏÀ» ÀÌ¿ëÇØ¼­ °¡´ÉÇØ Áý´Ï´Ù. ÀÌ ·çÇÁ¹é µð¹ÙÀ̽º¸¦ Àû¿ëÇÑ ¿¹·Î¼­, ISO9660 À̹ÌÁö¸¦ CDR·Î ±Á±â Àü¿¡ ¸¶¿îÆ®ÇØ¼­ Å×½ºÆ® ÇØº¸´Â °ÍÀÌ ÀÖ½À´Ï´Ù. [3] ¿¹ 13-5. CD À̹ÌÁö È®ÀÎÇϱâ # ·çÆ®·Î... mkdir /mnt/cdtest # ¸¶¿îÆ® Æ÷ÀÎÆ®°¡ ¾ø´Ù¸é ÁغñÇÔ. mount -r -t iso9660 -o loop cd-image.iso /mnt/cdtest # À̹ÌÁö ¸¶¿îÆ®. # "-o loop" ¿É¼ÇÀº "losetup /dev/loop0" ¿Í °°À½. cd /mnt/cdtest # ÀÌÁ¦ À̹ÌÁö¸¦ È®ÀÎ. ls -alR # À̹ÌÁö¿¡ µé¾îÀÖ´Â µð·ºÅ丮 Æ®¸®¿¡ µé¾î ÀÖ´Â ÆÄÀϵéÀ» ³ª¿­. # ±âŸ µîµî... umount ÇöÀç ¸¶¿îÆ® µÇ¾î ÀÖ´Â ÆÄÀÏ ½Ã½ºÅÛÀ» ¾ð¸¶¿îÆ® ÇØ ÁÝ´Ï´Ù. ÀÌ¹Ì ¸¶¿îÆ® µÇ¾î ÀÖ´Â Ç÷ÎÇdzª ½Ãµð·Ò µð½ºÅ©¸¦ »©±â Àü¿¡ ²À umount¸¦ ÇØ Áà¾ß ÇÕ´Ï´Ù. ¾È ±×·¯¸é ÆÄÀÏ ½Ã½ºÅÛÀÌ ±úÁú ¼öµµ ÀÖ½À´Ï´Ù. umount /mnt/cdrom # ÀÌÁ¦ ÀÌÁ§Æ® ¹öưÀ» ´­·¯ µð½ºÅ©¸¦ ¾ÈÀüÇÏ°Ô »¬ ¼ö ÀÖ½À´Ï´Ù. Âü°í: automount À¯Æ¿¸®Æ¼°¡ ÀûÀýÇÏ°Ô ¼³Ä¡µÇ¾î ÀÖ´Ù¸é Ç÷ÎÇdzª ½Ãµð·Ò µð½ºÅ©¿¡ Á¢±Ù½Ã³ª Á¦°Å½Ã¿¡ ÀÚµ¿À¸·Î ¸¶¿îÆ®¿Í ¾ð¸¶¿îÆ®¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù. Ç÷ÎÇdzª ½Ãµð·Ò µå¶óÀ̺긦 ²¼´Ù »°´Ù ÇÒ ¼ö ÀÖ´Â ·¦Å¾¿¡¼­´Â ¹®Á¦¸¦ ÀÏÀ¸Å³ ¼öµµ ÀÖ½À´Ï´Ù. sync ¹öÆÛ¿¡ µé¾î ÀÖ´Â Ãֽе¥ÀÌŸ¸¦ ÇÏµå µå¶óÀ̺ê·Î Áï½Ã ¾²°Ô ÇÕ´Ï´Ù(¹öÆÛ¿Í µå¶óÀ̺긦 µ¿±âÈ­). ÀÌ ¸í·É¾î°¡ ²À ÇÊ¿äÇÑ °ÍÀº ¾Æ´ÏÁö¸¸ ½Ã½ºÅÛ °ü¸®ÀÚ³ª »ç¿ëÀÚ¿¡°Ô ÀڽŵéÀÌ º¯°æÇÑ µ¥ÀÌŸ°¡ °©ÀÛ½º·± Àü¿ø À̻󿡵µ »ì¾Æ³²À» ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù. ¿¹Àü¿¡´Â sync; sync(¾ÆÁÖ È®½ÇÈ÷ Çϱâ À§Çؼ­ µÎ ¹ø ³»¸²)¶ó°í ÇØ¼­ ½Ã½ºÅÛÀ» ¸®ºÎÆÃÇϱâ ÀüÀÇ À¯¿ëÇÑ ¿¹¹æÃ¥À¸·Î ¾²¿´½À´Ï´Ù. ÆÄÀÏÀ» ¾ÈÀüÇÏ°Ô Áö¿ì°Å³ª(¿¹ 12-33) õÀåÀÇ ÀüµîÀÌ ±ôºýÀ̱⠽ÃÀÛÇßÀ» ¶§ ¹öÆÛ¸¦ Áï½Ã Ç÷¯½¬½ÃŰ°í ½ÍÀ» ¶§°¡ ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù. losetup ·çÇÁ¹é µð¹ÙÀ̽º¸¦ ¼³Á¤ÇØ ÁÝ´Ï´Ù. ¿¹ 13-6. ÇÑ ÆÄÀÏ¿¡¼­ Çѹø¿¡ ÆÄÀÏ ½Ã½ºÅÛ ¸¸µé±â SIZE=1000000 # 1 meg head -c $SIZE < /dev/zero > file # ÁöÁ¤µÈ Å©±â·Î ÆÄÀÏÀ» ¼³Á¤. losetup /dev/loop0 file # ·çÇÁ¹é µð¹ÙÀ̽º·Î ¼³Á¤. mke2fs /dev/loop0 # ÆÄÀÏ ½Ã½ºÅÛ ¸¸µé±â. mount -o loop /dev/loop0 /mnt # ¸¶¿îÆ®. # Thanks, S.C. mkswap ½º¿Ò ÆÄƼ¼ÇÀ̳ª ½º¿Ò ÆÄÀÏÀ» ¸¸µé¾î ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î ´ÙÀ½¿¡´Â ²À swaponÀ¸·Î Ȱ¼ºÈ­¸¦ ½ÃÄÑÁà¾ß ÇÕ´Ï´Ù. swapon, swapoff ½º¿Ò ÆÄƼ¼ÇÀ̳ª ½º¿Ò ÆÄÀÏÀ» Ȱ¼ºÈ­/ºñȰ¼ºÈ­ ½ÃÄÑ ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î´Â º¸Åë ºÎÆÃ½Ã³ª ¼Ë´Ù¿î½Ã¿¡ È¿·ÂÀ» °®½À´Ï´Ù. mke2fs ¸®´ª½º ext2 ÆÄÀϽýºÅÛÀ» ¸¸µé¾î ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î´Â ·çÆ®·Î ½ÇÇà ½ÃÄÑ¾ß ÇÕ´Ï´Ù. ¿¹ 13-7. »õ ÇÏµå µå¶óÀ̺ê Ãß°¡Çϱâ #!/bin/bash # ½Ã½ºÅÛ¿¡ µÎ ¹øÂ° ÇÏµå µå¶óÀ̺ê Ãß°¡Çϱâ. # ¼ÒÇÁÆ®¿þ¾î ¼³Á¤. Çϵå¿þ¾î°¡ ÀÌ¹Ì ¸¶¿îÆ®µÅ ÀÖ´Ù°í °¡Á¤ÇÔ. # º» ¹®¼­ÀÇ ÀúÀÚ°¡ "Linux Gazett", http://www.linuxgazette.com, 38È£¿¡ # ¾´ ±â»ç¿¡¼­ ¹ßÃé. ROOT_UID=0 # ÀÌ ½ºÅ©¸³Æ®´Â ·çÆ®·Î ½ÇÇà ½ÃÄÑ¾ß µË´Ï´Ù. E_NOTROOT=67 # root °¡ ¾Æ´Ñ °æ¿ìÀÇ Á¾·á ¿¡·¯. if [ "$UID" -ne "$ROOT_UID" ] then echo "ÀÌ ½ºÅ©¸³Æ®´Â ·çÆ®¸¸ ½ÇÇà½Ãų ¼ö ÀÖ½À´Ï´Ù." exit $E_NOTROOT fi # ÀÌ ½ºÅ©¸³Æ®´Â Á¤¸» ÁÖÀÇÇØ¼­ ¾²±â ¹Ù¶ø´Ï´Ù! # ¸¸¾à ¹«¾ð°¡°¡ À߸øµÈ´Ù¸é ¿©·¯ºÐÀÇ ÆÄÀÏ ½Ã½ºÅÛÀ» Ȧ¶ó´ç ³¯·Á¸ÔÀ» ¼ö ÀÖ½À´Ï´Ù. NEWDISK=/dev/hdb # /dev/hdb °¡ ºñ¾î ÀÖ´Ù°í °¡Á¤ÇÔ. ²À È®ÀÎÇØ º¼ °Í! MOUNTPOINT=/mnt/newdisk # ¾Æ´Ï¸é ´Ù¸¥ ¸¶¿îÆ® Æ÷ÀÎÆ® ÁöÁ¤. fdisk $NEWDISK mke2fs -cv $NEWDISK1 # ¹èµå ºí·° È®ÀÎ¹× ÀÚ¼¼ÇÑ Ãâ·Â. # ÁÖÀÇ: /dev/hdb °¡ *¾Æ´Ï¶ó* /dev/hdb1 ÀÔ´Ï´Ù! mkdir $MOUNTPOINT chmod 777 $MOUNTPOINT # »õ µå¶óÀ̺ê´Â ¸ðµç »ç¿ëÀÚ°¡ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ÇÔ. # ÀÚ, Å×½ºÆ®¸¦ ÇØ º¸ÁÒ. # mount -t ext2 /dev/hdb1 /mnt/newdisk # µð·ºÅ丮¸¦ ¸¸µé¾î º¸°í Àß µÈ´Ù¸é umount ÇÑ ´ÙÀ½ ÇÏ´ø ÀÏÀ» °è¼ÓÇÏ¸é µË´Ï´Ù. # ¸¶Áö¸· ´Ü°è: # ´ÙÀ½À» /etc/fstab ¿¡ Ãß°¡ÇØ ÁÖ¼¼¿ä. # /dev/hdb1 /mnt/newdisk ext2 defaults 1 1 exit 0 ¿¹ 13-6 ¿Í ¿¹ 29-3 µµ Âü°íÇϼ¼¿ä. tune2fs ext2 ÆÄÀÏ ½Ã½ºÅÛÀ» Æ©´×ÇØ ÁÝ´Ï´Ù. ÃÖ´ë ¸¶¿îÆ® ¼ýÀÚ°°Àº ÆÄÀÏ ½Ã½ºÅÛ ¸Å°³º¯¼ö¸¦ ¹Ù²Ù´Âµ¥ ¾²ÀÏ ¼ö ÀÖ½À´Ï´Ù. ·çÆ®·Î ½ÇÇàÇØ¾ß µË´Ï´Ù. ÁÖÀÇ ÀÌ ¸í·É¾î´Â ±²ÀåÈ÷ À§ÇèÇÕ´Ï´Ù. ºÎÁÖÀÇÇÏ°Ô ¾´´Ù¸é ¿©·¯ºÐ ÆÄÀÏ ½Ã½ºÅÛÀ» ¹Ú»ì³¾ ¼öµµ Àֱ⠶§¹®¿¡ ¿©·¯ºÐ ½º½º·Î Ã¥ÀÓÀ» Áö°í ½á¾ß ÇÕ´Ï´Ù. dumpe2fs ¾ÆÁÖ ÀÚ¼¼ÇÑ ÆÄÀÏ ½Ã½ºÅÛ Á¤º¸¸¦ Ç¥ÁØÃâ·ÂÀ¸·Î ´ýÇÁÇØ ÁÝ´Ï´Ù. ·çÆ®·Î ½ÇÇàµÇ¾ß ÇÕ´Ï´Ù. root# dumpe2fs /dev/hda7 | grep 'ount count' dumpe2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09 Mount count: 6 Maximum mount count: 20 hdparm ÇÏµå µð½ºÅ© ¸Å°³º¯¼ö¸¦ º¸¿©Áְųª ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ·çÆ®·Î ½ÇÇà½ÃÄÑ¾ß µÇ°í À߸ø ¾µ °æ¿ì À§ÇèÇÒ ¼ö ÀÖ½À´Ï´Ù. fdisk º¸ÅëÀº ÇÏµå µå¶óÀ̺êÀÏ, ÀúÀå¿ë µð¹ÙÀ̽º¿¡ ´ëÇØ¼­ ÆÄƼ¼Ç Å×À̺íÀ» ¸¸µé°í º¯°æÇÒ ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù. ·çÆ®·Î ½ÇÇàÇØ¾ß µË´Ï´Ù. ÁÖÀÇ ÀÌ ¸í·É¾î´Â ¾ÆÁÖ Á¶½ÉÇØ¼­ ½á¾ß µË´Ï´Ù. ¸¸¾à¿¡ ¹º°¡°¡ À߸øµÇ¸é ¿©·¯ºÐÀÇ ÆÄÀÏ ½Ã½ºÅÛÀ» ¸Á°¡Æ®¸± ¼öµµ ÀÖ½À´Ï´Ù. fsck, e2fsck, debugfs ÆÄÀÏ ½Ã½ºÅÛ Ã¼Å©, Ä¡·á, µð¹ö±×¿ë ¸í·É¾îµé. fsck: À¯´Ð½º ÆÄÀÏ ½Ã½ºÅÛÀ» Ã¼Å©ÇØ ÁÖ´Â ÇÁ·ÐÆ® ¿£µå(front end)·Î¼­ ´Ù¸¥ À¯Æ¿¸®Æ¼°¡ ÀÌ ¸í·É¾î¸¦ ºÎ¸§. ½ÇÁ¦·Î üũÇÒ ÆÄÀÏ ½Ã½ºÅÛ Å¸ÀÔÀº ext2°¡ ±âº»À¸·Î ÀâÇô ÀÖ½À´Ï´Ù. e2fsck: ext2 ÆÄÀÏ ½Ã½ºÅÛ Ã¼Ä¿. debugfs: ext2 ÆÄÀÏ ½Ã½ºÅÛ µð¹ö°Å. °æ°í ÀÌ ¸í·É¾îµéÀº ·çÆ®·Î ½ÇÇà½ÃÄÑ¾ß ÇÕ´Ï´Ù. À߸ø ¾²¸é ÆÄÀÏ ½Ã½ºÅÛÀÌ ¼Õ»óµÇ°Å³ª ¸Á°¡Áú ¼öµµ ÀÖ½À´Ï´Ù. badblocks ÀúÀå¿ë µð¹ÙÀ̽º¿¡ ´ëÇØ ¹èµå ºí·°(¹Ìµð¾îÀÇ ¹°¸®ÀûÀÎ °áÇÔ)À» Ã¼Å©ÇØ ÁÝ´Ï´Ù. »õ ÇÏµå µå¶óÀ̺긦 ¼³Ä¡ÇÏ°í Æ÷¸ËÇÒ ¶§³ª ¹é¾÷ ¹Ìµð¾îÀÇ ¹«°á¼ºÀ» Å×½ºÆ® ÇØº¸·Á°í ÇÒ ¶§ ¾µ ¼ö ÀÖ½À´Ï´Ù. [4] ¿¹¸¦ µé¾î badblocks /dev/fd0 ¶ó°í Çϸé Ç÷ÎÇÇ µð½ºÅ©¸¦ Å×½ºÆ®ÇØ ÁÝ´Ï´Ù. badblocks ¸í·É¾î´Â ¸ðµç µ¥ÀÌŸ¸¦ ´Ù µ¤¾î½á¹ö¸®µµ·Ï ºÒ¸± ¼öµµ ÀÖ°í Àбâ Àü¿ë ¸ðµå·Î ¾ÈÀüÇÏ°Ô ºÒ¸± ¼öµµ ÀÖ½À´Ï´Ù. ·çÆ® »ç¿ëÀÚ°¡ Å×½ºÆ®ÇÒ µð¹ÙÀ̽º¸¦ ¼ÒÀ¯Çϰí ÀÖ´Ù¸é, º¸Åë ±×·± »óȲÀÏÅ×Áö¸¸, ·çÆ®°¡ ÀÌ ¸í·É¾î¸¦ ½ÇÇà½ÃÄÑ¾ß ÇÕ´Ï´Ù. mkbootdisk ¿¹¸¦ µé¾î MBR(master boot record)ÀÌ ±úÁø »óȲµî¿¡¼­ ½Ã½ºÅÛÀ» ´Ù½Ã »ì¸± ¼ö ÀÖµµ·Ï ºÎÆÃ µð½ºÄÏÀ» ¸¸µé¾î ÁÝ´Ï´Ù. mkbootdisk´Â ½ÇÁ¦·Î´Â Erik TroanÀÌ ¸¸µç Bash ½ºÅ©¸³Æ®·Î /sbin µð·ºÅ丮¿¡ µé¾î ÀÖ½À´Ï´Ù. chroot ·çÆ® µð·ºÅ丮¸¦ ¹Ù²ãÁÝ´Ï´Ù(CHange ROOT directory). ¸í·É¾îµéÀº º¸Åë ±âº» ·çÆ® µð·ºÅ丮ÀÎ /¸¦ ±âÁØÀ¸·Î $PATH¿¡ µû¶ó ÇØ¼®µË´Ï´Ù. ÀÌ ¸í·É¾î´Â ÀÌ ·çÆ® µð·ºÅ丮¸¦ ´Ù¸¥ °÷À¸·Î ¹Ù²Û´ÙÀ½ ÀÛ¾÷ µð·ºÅ丮µµ ±× ÂÊÀ¸·Î ¹Ù²ãÁÝ´Ï´Ù. º¸¾È¿ëÀ¸·Î ¾ÆÁÖ À¯¿ëÇѵ¥, ¿¹¸¦ µé¸é ½Ã½ºÅÛ °ü¸®ÀÚ°¡ ÅÚ³ÝÀ¸·Î Á¢¼ÓÁßÀÎ »ç¿ëÀÚ¸¦ º¸¾È°ú °ü·ÃµÈ ÆÄÀÏ ½Ã½ºÅÛ¿¡ Á¢±Ù½ÃŰÁö ¾ÊÀ¸·Á ÇÒ ¶§¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù(°¡²û guest »ç¿ëÀÚ¸¦ "chroot °¨¿Á"(chroot jail)¿¡ °¡µÐ´Ù¶ó°íµµ ÇÕ´Ï´Ù). chrootÈÄ¿¡´Â ½Ã½ºÅÛ ¹ÙÀ̳ʸ®¿¡ ´ëÇÑ ½ÇÇà °æ·Î°¡ ´õ ÀÌ»ó ¸ÂÁö ¾Ê´Â °Í¿¡ ÁÖÀÇÇϱ⠹ٶø´Ï´Ù. chroot /opt ¶ó°í Çϸé /usr/binÀ» /opt/usr/binÀ̶ó°í ÇØ¼®ÇÕ´Ï´Ù. ºñ½ÁÇϰÔ, º¸ÅëÀÇ »óȲ¿¡¼­´Â /¸¦ ±âº» µð·ºÅ丮·Î »ïÁö¸¸ chroot /aaa/bbb /bin/ls ¶ó°í ÇÏ¸é ±× ÈÄ·Î ½ÇÇàµÇ´Â ls´Â /aaa/bbbÀ» ±âº» µð·ºÅ丮·Î ÀνÄÇÕ´Ï´Ù. »ç¿ëÀÚÀÇ ~/.bashrc¿¡ alias XX 'chroot /aaa/bbb ls' ¶ó´Â ÁÙÀ» ³ÖÀ¸¸é ±× »ç¿ëÀÚ°¡ "XX"¸¦ ½ÇÇà ½ÃŰ´Â ÆÄÀÏ ½Ã½ºÅÛÀ» È¿°úÀûÀ¸·Î Á¦ÇÑÇÒ ¼ö ÀÖ½À´Ï´Ù. chroot´Â ºñ»ó¿ë ºÎÆ® Ç÷ÎÇÇ·Î ºÎÆÃÇßÀ» ¶§ ÆíÇÏ°Ô ¾µ ¼ö ÀÖ°í(/dev/fd0¿¡ chroot °É±â), ½Ã½ºÅÛÀÌ ¹Ú»ì³ª¼­ °íÄ¡·Á°í ÇÒ ¶§ lilo¿¡ ¿É¼ÇÀ¸·Î ÁÙ ¼öµµ ÀÖ½À´Ï´Ù. ¶ÇÇÑ ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛÀ» ÅëÇØ¼­ ¼³Ä¡¸¦ ÇÒ °æ¿ì³ª(rpm ¿É¼Ç), CDROM °°Àº Àбâ Àü¿ë ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ½ÇÇàÇÒ ¶§ ¾µ ¼ö ÀÖ½À´Ï´Ù. ¿ÀÁ÷ ·çÆ® »ç¿ëÀÚ·Î ½ÇÇàÇÒ ¼ö ÀÖÀ¸¸ç, Á¶½ÉÇØ¼­ ½á¾ß ÇÕ´Ï´Ù. °æ°í ¸î °³ÀÇ ½Ã½ºÅÛ ÆÄÀϵéÀº chrootµÈ µð·ºÅ丮¿¡ º¹»çÇØ ³õ¾Æ¾ß $PATH°¡ ±×µéÀ» Á¦´ë·Î ÀνÄÇÒ ¼ö ÀÖ½À´Ï´Ù. lockfile ÀÌ À¯Æ¿¸®Æ¼´Â procmail ÆÐŰÁö ÁßÀÇ ÇϳªÀÔ´Ï´Ù(www.procmail.org ). ÀÌ ¸í·É¾î´Â Àá±Ý ÆÄÀÏÀ» ¸¸µé¾î Áִµ¥, Àá±Ý ÆÄÀÏÀ̶õ ƯÁ¤ ÆÄÀÏÀ̳ª µð¹ÙÀ̽º, ¸®¼Ò½º¿¡ ´ëÇØ¼­ Á¢±Ù Á¦¾î¸¦ ÇØÁÖ´Â ¼¼¸¶Æ÷¾î ÆÄÀÏÀÔ´Ï´Ù. Àá±Ý ÆÄÀÏÀº ÀÌ Æ¯Á¤ÇÑ ÆÄÀÏ, µð¹ÙÀ̽º, ¸®¼Ò½º¸¦ ƯÁ¤ ÇÁ·Î¼¼½º°¡ ¾²°í ÀÖ´Ù("busy")´Â Ç÷¡±×·Î ¾²¿©, ´Ù¸¥ ÇÁ·Î¼¼½º¿¡°Ô Á¦ÇÑµÈ Á¢±Ù¸¸À» Çã¿ëÇϰųª ¾Æ¿¹ Á¢±ÙÀ» ¸øÇϵµ·Ï ¸¸µé¾î ÁÝ´Ï´Ù. Àá±Ý ÆÄÀÏÀº ¿©·¯ »ç¿ëÀÚ¿¡ ÀÇÇØ ½Ã½ºÅÛ ¸ÞÀÏ Æú´õ°¡ µ¿½Ã¿¡ º¯°æµÇ´Â °ÍÀ» ¸·¾ÆÁÖ°í, ¸ðµ© Æ÷Æ®°¡ »ç¿ëÁßÀ̶ó´Â °ÍÀ» ¾Ë·ÁÁÖ¸ç, ³Ý½ºÄÉÀÌÇÁ°¡ ij½¬¸¦ »ç¿ëÁßÀ̶ó´Â °ÍÀ» º¸¿©Áִµ¥ ¾²ÀÏ ¼ö ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ®¿¡¼­ ƯÁ¤ ÇÁ·Î¼¼½º°¡ ¸¸µé¾î ³õÀº Àá±Ý ÆÄÀÏÀÌ ÀÖ´ÂÁö È®ÀÎÇØ¼­ ±× ÇÁ·Î¼¼½º°¡ ÀÌ¹Ì ¶° ÀÖ´ÂÁö ¾Ë¾Æ³¾ ¼öµµ ÀÖ½À´Ï´Ù. ¸¸¾à¿¡ ½ºÅ©¸³Æ®¿¡¼­ ÀÌ¹Ì Á¸ÀçÇÏ´Â Àá±Ý ÆÄÀÏÀ» ´Ù½Ã ¸¸µé·Á°í ÇÑ´Ù¸é ±× ½ºÅ©¸³Æ®´Â ¸ØÃç ¹ö¸± ¼öµµ ÀÖÀ¸´Ï Á¶½ÉÇϱ⠹ٶø´Ï´Ù. º¸ÅëÀÇ ¾îÇø®ÄÉÀ̼ǵéÀº Àá±Ý ÆÄÀÏÀ» ¸¸µé°í üũÇÏ´Â ±âº» µð·ºÅ丮¸¦ /var/lock À¸·Î »ï½À´Ï´Ù. ´ÙÀ½ ½ºÅ©¸³Æ®Ã³·³ ÇØ¼­ Àá±Ý ÆÄÀÏÀÌ ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. appname=xyzip # "xyzip" ¾îÇø®ÄÉÀ̼ÇÀº "/var/lock/xyzip.lock" ¶õ Àá±Ý ÆÄÀÏÀ» ¸¸µì´Ï´Ù. if [ -e "/var/lock/$appname.lock ] then ... mknod ºí·° µð¹ÙÀ̽º³ª ¹®ÀÚ µð¹ÙÀ̽º ÆÄÀÏÀ» ¸¸µé¾î ÁÝ´Ï´Ù(¿¹¸¦ µé¸é Çϵå¿þ¾î¸¦ »õ·Î ¼³Ä¡ÇÒ °æ¿ì¿¡ ÇÊ¿äÇϰÚÁÒ?). tmpwatch ƯÁ¤ ±â°£µ¿¾È Á¢±ÙÀÌ ¾ø´Â ÆÄÀÏÀ» ÀÚµ¿À¸·Î Áö¿öÁÝ´Ï´Ù. º¸ÅëÀº ¿À·¡µÈ ·Î±× ÆÄÀÏÀ» Áö¿ì±â À§ÇØ crond¿¡ °É¾î ³õ°í ¾¹´Ï´Ù. MAKEDEV µð¹ÙÀ̽º ÆÄÀÏÀ» ¸¸µé¾î ÁÖ´Â À¯Æ¿¸®Æ¼·Î¼­, ·çÆ®·Î ½ÇÇà½ÃÄÑ¾ß ÇÕ´Ï´Ù. ÀÌ ¸í·É¾î´Â /dev µð·ºÅ丮¿¡ ÀÖ½À´Ï´Ù. root# ./MAKEDEV ÀÌ ¸í·É¾î´Â ÀÏÁ¾ÀÇ mknodÀÇ Çâ»óµÈ ¹öÀüÀÔ´Ï´Ù. ¹é¾÷ dump, restore dump ¸í·É¾î´Â º¹ÀâÇÑ ÆÄÀÏ ½Ã½ºÅÛ ¹é¾÷ À¯Æ¿¸®Æ¼·Î¼­ º¸ÅëÀº ±Ô¸ð°¡ Å« ¼³Ä¡¿Í ³×Æ®¿öÅ©¿¡¼­ ¾²ÀÔ´Ï´Ù. [5] µð½ºÅ© ÆÄƼ¼ÇÀ» ÀÖ´Â ±×´ë·Î(raw) ÀÐ°í ¹ÙÀ̳ʸ® ÇüÅ·Π¹é¾÷ ÆÄÀÏÀ» ¸¸µé¾î ³À´Ï´Ù. ¹é¾÷ µÇ´Â ÆÄÀϵéÀº µð½ºÅ©³ª Å×ÀÔ µå¶óÀ̺갰Àº ´Ù¾çÇÑ ÀúÀå ¹Ìµð¾î·Î ÀúÀåµË´Ï´Ù. restore ¸í·É¾î´Â dump·Î ¹é¾÷µÈ ÆÄÀϵéÀ» º¹±¸½ÃÄÑ ÁÝ´Ï´Ù. fdformat Ç÷ÎÇÇ µð½ºÅ©¿¡ ´ëÇØ¼­ ·Î¿ì·¹º§ Æ÷¸ËÀ» ÇØ ÁÝ´Ï´Ù. ½Ã½ºÅÛ ¸®¼Ò½º ulimit ½Ã½ºÅÛ ¸®¼Ò½º¿¡ ´ëÇØ¼­ ÃÖ´ë ÇѰè(upper limit)¸¦ ÁöÁ¤ÇØ ÁÝ´Ï´Ù. º¸Åë -f ¿É¼ÇÀ» ½á¼­ ½©ÀÌ ¸¸µé ¼ö ÀÖ´Â ÆÄÀÏ Å©±â¸¦ Á¦ÇÑ ½Ãŵ´Ï´Ù(ulimit -f 1000 À̶ó°í ÇÏ¸é ÆÄÀÏ Å©±â¸¦ 1 ¸Þ°¡·Î Àâ¾Æ ÁÝ´Ï´Ù). -t ¿É¼ÇÀº ÄÚ¾î´ýÇÁ ÆÄÀÏÀÇ Å©±â¸¦ Á¦ÇÑ ½Ãŵ´Ï´Ù(ulimit -c 0 À̶ó°í Çϸé ÄÚ¾î´ýÇÁ¸¦ »ý¼º½ÃŰÁö ¾Ê½À´Ï´Ù). ulimit °ªÀº º¸Åë, /etc/profileÀ̳ª ~/.bash_profile¿¡¼­ ÁöÁ¤ÇØ ÁÝ´Ï´Ù(27Àå Âü°í). umask »ç¿ëÀÚ(User) ÆÄÀÏ »ý¼º ¸¶½ºÅ©(MASK). »ç¿ëÀÚ °¢ÀÚÀÇ ±âº» ÆÄÀÏ ¼Ó¼ºÀ» Á¦ÇÑÇØ ÁÝ´Ï´Ù. »ç¿ëÀÚ°¡ »ý¼ºÇÏ´Â ¸ðµç ÆÄÀÏÀº umask·Î ÁöÁ¤µÈ ¼Ó¼ºÀÇ ¿µÇâÀ» ¹Þ½À´Ï´Ù. umask·Î ³Ñ°ÜÁØ °ªÀº ÇØ´ç ÆÄÀÏ ¼ÒÀ¯±ÇÀ» ²¨¹ö¸³´Ï´Ù. ¿¹¸¦ µé¾î, umask 022 ´Â »õ·Î ¸¸µé¾î Áö´Â ÆÄÀÏÀÌ ÃÖ¼ÒÇÑ 755 ¼ÒÀ¯±ÇÀ» °®µµ·Ï ÇØ ÁÝ´Ï´Ù(777 NAND 022). [6] »ç¿ëÀÚ´Â ´ç¿¬È÷ ³ªÁß¿¡ ±× ÆÄÀÏÀÇ ¼Ó¼ºÀ» chmod·Î ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. º¸Åë umask °ªÀ» ¼³Á¤ÇÒ ¶§´Â /etc/profileÀ̳ª ~/.bash_profile¿¡¼­ ÇÕ´Ï´Ù(27Àå Âü°í). rdev ·çÆ® µð¹ÙÀ̽º, ½º¿Ò ¿µ¿ª, ºñµð¿À ¸ðµå¿¡ ´ëÇÑ Á¤º¸¸¦ ¾ò°Å³ª º¯°æ. rdevÀÇ ±â´ÉÀº lilo·Î ³Ñ¾î°¬Áö¸¸ ¾ÆÁ÷ ·¥ µð½ºÅ©¸¦ ¼³Á¤ÇÒ ¶§´Â À¯¿ëÇÕ´Ï´Ù. ¿ª½Ã À߸ø ¾²¸é À§ÇèÇÑ ¸í·É¾îÀÔ´Ï´Ù. ¸ðµâ lsmod ¼³Ä¡µÈ Ä¿³Î ¸ðµâÀ» º¸¿©ÁÝ´Ï´Ù. bash$ lsmod Module Size Used by autofs 9456 2 (autoclean) opl3 11376 0 serial_cs 5456 0 (unused) sb 34752 0 uart401 6384 0 [sb] sound 58368 0 [opl3 sb uart401] soundlow 464 0 [sound] soundcore 2800 6 [sb sound] ds 6448 2 [serial_cs] i82365 22928 2 pcmcia_core 45984 0 [serial_cs ds i82365] insmod Ä¿³Î ¸ðµâÀ» °­Á¦·Î ¿Ã¸³´Ï´Ù. ·çÆ®·Î ½ÇÇàÇØ¾ß ÇÕ´Ï´Ù. modprobe º¸Åë ½Ã½ºÅÛ ±¸µ¿ ½ºÅ©¸³Æ®¿¡¼­ ÀÚµ¿À¸·Î ºÒ¸®´Â ¸ðµâ ·Î´õ. depmod ¸ðµâ°£ ÀÇÁ¸ ÆÄÀÏÀ» ¸¸µé¾î ÁÝ´Ï´Ù. º¸Åë ½Ã½ºÅÛ ±¸µ¿ ½ºÅ©¸³Æ®¿¡¼­ ºÒ¸³´Ï´Ù. ±âŸ ¸í·É¾îµé env ÇöÀçÀÇ È¯°æ º¯¼ö, ȤÀº ±× °ªÀ» ¹Ù²ã ÇÁ·Î±×·¥À̳ª ½ºÅ©¸³Æ®¸¦ ½ÇÇà ½Ãŵ´Ï´Ù(½Ã½ºÅÛ Àüü ȯ°æÀº °Çµå¸®Áö ¾Ê½À´Ï´Ù). [varname=xxx] ¿É¼ÇÀ» ÁÖ¸é ½ºÅ©¸³Æ®°¡ ½ÇÇàµÉ µ¿¾È¿¡¸¸ ȯ°æ º¯¼ö varnameÀÇ °ªÀ» ¹Ù²ãÁÝ´Ï´Ù. ¾Æ¹« ¿É¼Çµµ ¾È ÁÖ¸é ÇöÀç ¼¼ÆÃµÇ¾î ÀÖ´Â ¸ðµç ȯ°æ º¯¼ö¸¦ º¸¿©ÁÝ´Ï´Ù. Âü°í: Bash³ª º»½©¿¡¼­ ÆÄ»ýµÈ ´Ù¸¥ ½©µé¿¡¼­´Â ´ÜÀÏ ¸í·É¾î ȯ°æ¿¡¼­ º¯¼ö¸¦ ¼³Á¤ÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. var1=value1 var2=value2 commandXXX # 'commandXXX' ÀÇ È¯°æ¿¡¼­¸¸ $var1 °ú $var2 ¸¦ ¼³Á¤. ÀÛÀº Á¤º¸: ½ºÅ©¸³Æ®ÀÇ Ã¹¹øÂ° ÁÙ("#!"°¡ ÀÖ´Â ÁÙ)¿¡ env¸¦ ½á¼­ °æ·Î¸¦ ¸ð¸£´Â ½©À̳ª ¸í·É¾î ÇØ¼®±â¸¦ ÁöÁ¤ÇØ ÁÙ ¼öµµ ÀÖ½À´Ï´Ù. #! /usr/bin/env perl print "ÆÞÀÌ ¾îµð¿¡ ÀÖ´ÂÁö ¸ô¶óµµ\n"; print "ÀÌ ÆÞ ½ºÅ©¸³Æ®´Â Àß µ¿ÀÛÇÒ °ÍÀÔ´Ï´Ù.\n"; # ÆÞ ½ÇÇà ÆÄÀÏÀÌ ¿øÇÏ´Â °÷¿¡ ¾øÀ» ¼öµµ Àֱ⠶§¹®¿¡ # À̽ļº ÀÖ´Â Å©·Î½º Ç÷§Æû¿ë ½ºÅ©¸³Æ®¿¡ ¾ÆÁÖ ÁÁ½À´Ï´Ù. # Thanks, S.C. ldd ½ÇÇà ÆÄÀÏ¿¡ ÇÊ¿äÇÑ °øÀ¯ ¶óÀ̺귯¸®¸¦ º¸¿©ÁÝ´Ï´Ù. bash$ ldd /bin/ls libc.so.6 => /lib/libc.so.6 (0x4000c000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) strip ½ÇÇà °¡´ÉÇÑ ¹ÙÀ̳ʸ® ÆÄÀÏ¿¡¼­ µð¹ö±ë¿ë ½Éº¼¸¯ ÂüÁ¶ Á¤º¸¸¦ Á¦°ÅÇØ ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î¸¦ ¾²¸é ½ÇÇà ÆÄÀÏÀÇ Å©±â´Â ÀÛ¾ÆÁöÁö¸¸ µð¹ö±ëÀº ÇÒ ¼ö°¡ ¾ø½À´Ï´Ù. ÁÖ·Î Makefile¿¡¼­³ª ³ª¿À°í ½© ½ºÅ©¸³Æ®¿¡¼­´Â Àß ¾²ÀÌÁö ¾Ê½À´Ï´Ù. nm strip µÇÁö ¾ÊÀº ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ®¿¡ µé¾î ÀÖ´Â ½Éº¼µéÀ» º¸¿©ÁÝ´Ï´Ù. rdist ¸®¸ðÆ® ºÐ»ê Ŭ¶óÀ̾ðÆ®: ¸®¸ðÆ® ¼­¹ö¿¡ ÀÖ´Â ÆÄÀÏ ½Ã½ºÅÛÀ¸·Î µ¿±âÈ­, º¹»ç, ¹é¾÷À» ÇØ ÁÝ´Ï´Ù. Áö±Ý±îÁö ¹è¿î °ü¸®ÀÚ¿ë ¸í·É¾îµé¿¡ ´ëÇÑ Áö½ÄÀ» °¡Áö°í ½Ã½ºÅÛ ½ºÅ©¸³Æ®¸¦ »ìÆì º¸µµ·Ï ÇϰڽÀ´Ï´Ù. killallÀº ½Ã½ºÅÛ ¼Ë´Ù¿î½Ã¿¡, µ¹°í ÀÖ´Â ÇÁ·Î¼¼½º¸¦ ¸ØÃß°Ô ÇØ ÁÖ´Â ÇÁ·Î¼¼½º·Î¼­, ªÀ¸¸é¼­µµ ÀÌÇØÇϱ⠽¬¿î ½ºÅ©¸³Æ®ÁßÀÇ ÇϳªÀÔ´Ï´Ù. ¿¹ 13-8. killall, /etc/rc .d/init.d ¿¡¼­ Àοë #!/bin/sh # --> "# -->" Ç¥½Ã´Â º» ¹®¼­ÀÇ ÀúÀÚ°¡ ºÙÀÎ ÁÖ¼®ÀÔ´Ï´Ù. # --> ¿©±â¼­ ¼Ò°³ÇÏ´Â ºÎºÐÀº # --> Miquel van Smoorenburg()ÀÇ # --> 'rc' ½ºÅ©¸³Æ® ÆÐŰÁöÁßÀÇ ÀϺÎÀÔ´Ï´Ù. # --> ÀÌ ½ºÅ©¸³Æ®´Â ·¹µåÇÞ Àü¿ë ½ºÅ©¸³Æ®ÀÎ °Íó·³ º¸À̱⠶§¹®¿¡ # --> ´Ù¸¥ ¹èÆ÷ÆÇ¿¡´Â ¾øÀ» ¼öµµ ÀÖ½À´Ï´Ù. # ¾²ÀÌÁö ¾ÊÀ¸¸é¼­ ½ÇÇàÁßÀÎ ¸ðµç ¼­ºñ½º¸¦ Á×ÀÔ´Ï´Ù(½ÇÁ¦·Î ½ÇÇàÁßÀÎÁö¸¦ # È®½ÇÈ÷ È®ÀÎÇϱ⠶§¹®¿¡ ¾Æ¹« ¼­ºñ½ºµµ ¾È Á×ÀÏ ¼ö ÀÖ½À´Ï´Ù). for i in /var/lock/subsys/*; do # --> Ç¥ÁØ for/in ·çÇÁÀ̳ª "do" °¡ °°Àº ÁÙ¿¡ Àֱ⠶§¹®¿¡ # --> ";" ¸¦ ºÙ¿©Áà¾ß µË´Ï´Ù. # ½ºÅ©¸³Æ®°¡ ½ÇÁ¦·Î ÀÖ´ÂÁö È®ÀÎ. [ ! -f $i ] && continue # --> "and list"¸¦ ¾ÆÁÖ Àß ½è½À´Ï´Ù. ´ÙÀ½Ã³·³ ÇØµµ ¶È°°½À´Ï´Ù. # --> if [ ! -f "$i" ]; then continue # ¼­ºê½Ã½ºÅÛ À̸§À» ¾Ë¾Æ³À´Ï´Ù. subsys=${i#/var/lock/subsys/} # --> º¯¼ö À̸§ ¸ÅĪÀε¥ ¿©±â¼­´Â ÆÄÀÏ À̸§ÀÌ µÇ°ÚÁÒ. # --> subsys=`basename $i` ¿Í ¿ÏÀüÈ÷ ¶È°°Àº Ç¥ÇöÀÔ´Ï´Ù. # --> Àá±Ý ÆÄÀÏÀÇ À̸§À» ¾Ë¾Æ³»´Âµ¥, Àá±Ý ÆÄÀÏÀÌ ÀÖ´Ù¸é # --> ÇØ´ç ÇÁ·Î¼¼½º°¡ ½ÇÇàÁßÀ̶ó´Â Áõ°ÅÀÔ´Ï´Ù. # --> ¾Õ¿¡¼­ ¼³¸íÇß´ø "lockfile" À» Âü°íÇϼ¼¿ä. # ±× ¼­ºê½Ã½ºÅÛÀ» ³»¸³´Ï´Ù. if [ -f /etc/rc.d/init.d/$subsys.init ]; then /etc/rc.d/init.d/$subsys.init stop else /etc/rc.d/init.d/$subsys stop # --> ½© ³»Àå¸í·ÉÀÎ 'stop'À» ½á¼­ µ¹°í ÀÖ´Â ÀÛ¾÷°ú µ¥¸óÀ» ÁßÁö½Ãŵ´Ï´Ù. fi done