/dev/nullÀ» "ºí·¢È¦"À̶ó°í »ó»óÇØ º¸¼¼¿ä. ÀÌ ÆÄÀÏÀº °ÅÀÇ Àбâ Àü¿ë ÆÄÀÏÀ̳ª ¸¶Âù°¡Áý´Ï´Ù. ÀÌ ÆÄÀÏ¿¡ ¾²´Â ¸ðµç°ÍÀº ¿µ¿øÈ÷ »ç¶óÁ® ¹ö¸±°Ì´Ï´Ù. ÀÌ ÆÄÀÏ¿¡¼ ¹«¾ð°¡¸¦ ÀÐÀ¸·Á°í Çϰųª ¾î¶² °á°ú¸¦ ¹Ù¶ó´Â °ÍÀº ¹«ÀǹÌÇÑ ÀÏÀÔ´Ï´Ù. ±×·³¿¡µµ ºÒ±¸ÇÏ°í, /dev/nullÀº ¸í·É¾î ÁÙÀ̳ª ½ºÅ©¸³Æ®¿¡¼ ¾ÆÁÖ À¯¿ëÇÏ°Ô ¾µ ¼ö ÀÖ½À´Ï´Ù.
Ç¥ÁØÃâ·ÂÀ̳ª Ç¥ÁØ¿¡·¯ ¸·±â(¿¹ 30-1¿¡¼ Àοë):
rm $badname 2>/dev/null # ¿¡·¯ ¸Þ¼¼Áö[stderr]´Â ¿ÏÀüÈ÷ »ç¶óÁ® ¹ö¸³´Ï´Ù. |
ÆÄÀÏ ÀÚü¿Í ¸ðµç Æ۹̼ÇÀº ±×´ë·Î °¡Áö¸é¼ ³»¿ë¸¸ Áö¿ì±â(¿¹ 2-1 ¿Í ¿¹ 2-2¿¡¼ Àοë):
cat /dev/null > /var/log/messages # : > /var/log/messages ¶ó°í Çصµ °°Áö¸¸, ÀÌ·¸°Ô ÇÏ¸é »õ ÇÁ·Î¼¼½º¸¦ ¶ç¿ìÁö ¾Ê½À´Ï´Ù. cat /dev/null > /var/log/wtmp |
·Î±× ÆÄÀÏÀÇ ³»¿ëÀ» ÀÚµ¿À¸·Î ºñ¿ì±â(»ó¿ë À¥ »çÀÌÆ®¿¡¼ º¸³»´Â ±ÍÂúÀº "ÄíÅ°"¸¦ ó¸®ÇÒ ¶§ Ưº°È÷ ÁÁ½À´Ï´Ù):
/dev/zeroµµ /dev/nulló·³ °¡»ó ÆÄÀÏ(pseudo file)ÀÌÁö¸¸, ½ÇÁ¦·Î ³Î °ªÀ» °®°í ÀÖ½À´Ï´Ù(¾Æ½ºÅ° ¹®ÀÚ 0ÀÌ ¾Æ´Ñ ¼ýÀÚ 0). ÀÌ ÆÄÀÏ¿¡ ¹«¾ð°¡¸¦ ¾²¸é ±× Ãâ·ÂÀº »ç¶óÁý´Ï´Ù. ÀÌ ÆÄÀÏ¿¡¼ ³Î °ªÀ» ÀÐ¾î ³»´Â °ÍÀº ¾ÆÁÖ ¾î·Æ½À´Ï´Ù¸¸ od ¸í·É¾î³ª Çí»ç ¿¡µðÅÍ·Î ÇÒ ¼ö´Â ÀÖ½À´Ï´Ù. /dev/zero´Â ƯÁ¤ÇÑ ±æÀÌÀÇ ÃʱâÈµÈ ´õ¹Ì ÆÄÀÏÀ» Àӽà ½º¿Ò ÆÄÀÏ·Î ¸¸µå´Âµ¥ ÁÖ·Î ¾²ÀÔ´Ï´Ù.
¿¹ 29-2. /dev/zero·Î ½º¿Ò ÆÄÀÏ ¼¼ÆÃÇϱâ
#!/bin/bash # ½º¿Ò ÆÄÀÏ ¸¸µé±â. # ·çÆ®·Î ½ÇÇà½ÃÅ°¼¼¿ä. ROOT_UID=0 # ·çÆ® $UID ´Â 0. E_WRONG_USER=65 # ·çÆ®°¡ ¾Æ´Ô. FILE=/swap BLOCKSIZE=1024 MINBLOCKS=40 SUCCESS=0 if [ "$UID" -ne "$ROOT_UID" ] then echo; echo "ÀÌ ½ºÅ©¸³Æ®´Â ·çÆ®¸¸ ½ÇÇà½Ãų ¼ö ÀÖ½À´Ï´Ù."; echo exit $E_WRONG_USER fi if [ -n "$1" ] then blocks=$1 else blocks=$MINBLOCKS # ¸í·É¾îÁÙ¿¡¼ ÁöÁ¤ÇØ ÁÖÁö ¾ÊÀ¸¸é fi # 40 ºí·°À» ±âº»°ªÀ¸·Î ¼¼Æ®. if [ "$blocks" -lt $MINBLOCKS ] then blocks=$MINBLOCKS # ÃÖ¼Ò 40 ºí·°À̾î¾ß µË´Ï´Ù. fi echo "Creating swap file of size $blocks blocks (KB)." dd if=/dev/zero of=$FILE bs=$BLOCKSIZE count=$blocks # Zero out file. mkswap $FILE $blocks # Designate it a swap file. swapon $FILE # Activate swap file. echo "Swap file created and activated." exit $SUCCESS |
/dev/zeroÀÇ ´Ù¸¥ ÀÀ¿ëÀ¸·Î´Â, ÆÄÀÏÀÌ 0À¸·Î¸¸ ÀÌ·ç¾îÁø ÁöÁ¤µÈ Å©±â¸¦ °®°Ô ÇÏ´Â °ÍÀε¥, ·çÇÁ¹é µð¹ÙÀ̽º¸¦ ¸¶¿îÆ® ÇÏ´Â µîÀÇ Æ¯º°ÇÑ ¸ñÀûÀ» À§ÇØ ¾²ÀÔ´Ï´Ù. ¿¹ 13-6¿Í ¿¹ 12-33¸¦ Âü°íÇϼ¼¿ä.
¿¹ 29-3. ·¥µð½ºÅ© ¸¸µé±â
#!/bin/bash # ramdisk.sh # "ramdisk" ¶õ ½Ã½ºÅÛÀÇ RAM ÀÇ ÀÏÁ¤ ºÎºÐ(segment)À» #+ ÆÄÀϽýºÅÛó·³ ¾²´Â °ÍÀ» ¸»ÇÕ´Ï´Ù. # ·¥µð½ºÅ©ÀÇ ÀåÁ¡Àº Àаí/¾²±â°¡ ¾ÆÁÖ ºü¸£´Ù´Âµ¥ ÀÖ½À´Ï´Ù. # ´ÜÁ¡: Èֹ߼ºÀÌ Àֱ⠶§¹®¿¡ ½Ã½ºÅÛÀÌ ¸®ºÎÆ®µÇ°Å³ª ²¨Áö¸é ±× ³»¿ëÀ» ÀÒ¾î¹ö¸³´Ï´Ù. # ·¥µð½ºÅ©·Î ÇÒ´çÇÑ ¸¸ÅÀÇ ¸Þ¸ð¸®¸¦ ¸ø ¾²°Ô µË´Ï´Ù. # # ·¥µð½ºÅ©°¡ ¹¹°¡ ÁÁÀ»±î¿ä? # Å×À̺íÀ̳ª »çÀüó·³ ¾ÆÁÖ Å« µ¥ÀÌŸ¸¦ ·¥µð½ºÅ©¿¡ ¿Ã·Á ³õÀ¸¸é #+ µð½ºÅ© Á¢±Ù ¼Óµµº¸´Ù ¸Þ¸ð¸® Á¢±Ù ¼Óµµ°¡ ÈξÀ ºü¸£±â ¶§¹®¿¡ µ¥ÀÌŸ Ž»ö ¼Óµµ°¡ »¡¶óÁý´Ï´Ù. E_NON_ROOT_USER=70 # ·çÆ®·Î ½ÇÇà. ROOTUSER_NAME=root MOUNTPT=/mnt/ramdisk SIZE=2000 # 2K ºí·°(ÇÊ¿ä¿¡ µû¶ó ¼öÁ¤) BLOCKSIZE=1024 # 1K (1024 byte) ºí·° Å©±â DEVICE=/dev/ram0 # ù¹ø° ·¥ µð¹ÙÀ̽º username=`id -nu` if [ "$username" != "$ROOTUSER_NAME" ] then echo "\"`basename $0`\" ´Â ·çÆ®·Î ½ÇÇà½ÃÄÑ¾ß µË´Ï´Ù." exit $E_NON_ROOT_USER fi if [ ! -d "$MOUNTPT" ] # ¸¶¿îÆ® Æ÷ÀÎÆ®°¡ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇؼ then #+ ÀÌ ½ºÅ©¸³Æ®¸¦ ¿©·¯¹ø ½ÇÇà½ÃÄѵµ ¿¡·¯°¡ ³ªÁö ¾Êµµ·Ï ÇÔ. mkdir $MOUNTPT fi dd if=/dev/zero of=$DEVICE count=$SIZE bs=$BLOCKSIZE # ·¥ µð¹ÙÀ̽º ÃʱâÈ(zero out). mke2fs $DEVICE # ·¥ µð½ºÅ©¿¡ ext2 ÆÄÀϽýºÅÛÀ» ¸¸µé°í, mount $DEVICE $MOUNTPT # ¸¶¿îÆ®. chmod 777 $MOUNTPT # ÀÏ¹Ý »ç¿ëÀÚµµ Á¢±Ù °¡´ÉÇÏ°Ô. # ÇÏÁö¸¸ ¾ð¸¶¿îÆ®´Â ·çÆ®¸¸. echo "ÀÌÁ¦ \"$MOUNTPT\" ¸¦ ¾µ ¼ö ÀÖ½À´Ï´Ù." # ÀÌÁ¦ºÎÅÍ´Â ÀϹݻç¿ëÀÚ±îÁöµµ ·¥µð½ºÅ©¿¡ ÆÄÀÏÀ» ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. # ÁÖÀÇÇÒ Á¡Àº ·¥µð½ºÅ©°¡ Èֹ߼ºÀ» °®±â ¶§¹®¿¡ ¸®ºÎÆ®³ª Àü¿øÀÌ ²¨Áú ¶§¿¡´Â #+ ±× ³»¿ëÀÌ ¾ø¾îÁý´Ï´Ù. # ÀúÀåÇÏ°í ½ÍÀº °ÍÀÌ ÀÖ´Ù¸é ·¥µð½ºÅ©°¡ ¾Æ´Ñ ÀÏ¹Ý µð·ºÅ丮·Î º¹»çÇؼ ¾²¸é µË´Ï´Ù. # ¸®ºÎÆ®ÈÄ¿¡ ·¥µð½ºÅ©¸¦ ´Ù½Ã ¼Â¾÷ÇÏ°í ½Í´Ù¸é ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃÅ°¸é µË´Ï´Ù. # /mnt/ramdisk ¸¦ ÀÌ ½ºÅ©¸³Æ®¸¦ ÅëÇÏÁö ¾Ê°í #+ ´Ù¸¥ ¹æ¹ýÀ¸·Î ´Ù½Ã ¸¶¿îÆ®ÇÏ·Á°í ÇÑ´Ù¸é Á¦´ë·Î µ¿ÀÛÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. exit 0 |