½© ½ºÅ©¸³Æ®ÀÇ °¡Àå °£´ÜÇÑ ¿¹´Â ½ºÅ©¸³Æ® ÆÄÀÏ¿¡ ½Ã½ºÅÛ ¸í·É¾îµéÀ» ´Ü¼øÈ÷ ³ª¿ÇØ ³õ´Â °ÍÀÔ´Ï´Ù. ÀÌ´Â Àû¾îµµ ƯÁ¤ÇÑ ¼ø¼·Î ¸í·É¾î¸¦ ½ÇÇà½Ãų ¶§¸¶´Ù ´Ù½Ã Ä¡´Â ¼ö°í¸¦ ´ú¾î ÁÝ´Ï´Ù.
예 2-1. cleanup: /var/log ¿¡ ÀÖ´Â ·Î±× ÆÄÀϵéÀ» û¼ÒÇÏ´Â ½ºÅ©¸³Æ®
# cleanup # ·çÆ®·Î ½ÇÇà ½ÃŰ¼¼¿ä. cd /var/log cat /dev/null > messages cat /dev/null > wtmp echo "Logs cleaned up." |
º° ´Ù¸¥°Ô ¾øÁÒ? ´Ü¼øÈ÷ ÄܼÖÀ̳ª ÇÑÅÒÀÇ ¸í·É¾î ÁÙ»ó¿¡¼ ½±°Ô ½ÇÇà½Ãų ¼ö ÀÖ´Â ¸í·É¾îµéÀÇ Á¶ÇÕÀÔ´Ï´Ù. ¸í·É¾îµéÀ» ½ºÅ©¸³Æ® »ó¿¡¼ ½ÇÇà½ÃŰ´Â °ÍÀº À̵éÀ» ´Ù½Ã Ä¡Áö ¾Ê¾Æµµ µÈ´Ù´Â °Í ÀÌ»óµµ ÀÌÇϵµ ¾Æ´Õ´Ï´Ù. ƯÁ¤ÇÑ ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ ½±°Ô °íÄ¡°í ÀÔ¸À¿¡ ¸Â°Ô ¼öÁ¤Çϰí ÀϹÝÀûÀ¸·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù.
예 2-2. cleanup: À§ ½ºÅ©¸³Æ®ÀÇ °ÈµÇ°í ÀϹÝÈµÈ ¹öÀü
#!/bin/bash # cleanup, version 2 # ·çÆ®·Î ½ÇÇà ½ÃŰ¼¼¿ä. # ÄÁ¸Çµå ¶óÀÎ ÆÄ¶ó¹ÌÅͰ¡ ÀÖ´ÂÁö Å×½ºÆ® if [ -n $1 ] then lines=$1 else # ÀÎÀÚ°¡ ¾ø´Ù¸é µðÆúÆ® ó¸® lines=50 fi cd /var/log # message ·Î±× ÆÄÀÏÀÇ ¸¶Áö¸· ºÎºÐÀ» ÀúÀå tail -$lines messages > mesg.temp mv mesg.temp messages # À§ÀÇ ¹æ¹ýÀÌ ´õ ¾ÈÀüÇϴϱî ÇÊ¿ä ¾øÀ½ # cat /dev/null > messages cat /dev/null > wtmp echo "Logs cleaned up." # exit·Î 0À» ¸®ÅÏÇϰí Á¾·á # ½©¿¡°Ô ¼º°øÇß´Ù°í ¾Ë·ÁÁÜ exit 0 |
¿©±â¼´Â ½Ã½ºÅÛ ·Î±× Àüü¸¦ ³¯·Á ¹ö¸± »ý°¢ÀÌ ¾øÀ» Å״ϱî message ·Î±×ÀÇ ¸¶Áö¸· ºÎºÐÀ» ±×´ë·Î ³²°Ü ³õ½À´Ï´Ù. ¾ÕÀ¸·Î ÀÌ ½ºÅ©¸³Æ®¸¦ °è¼Ó ¾÷±×·¹ÀÌµå ½ÃÄѼ Á» ´õ À¯¿ëÇÏ°Ô ¾µ ¼ö ÀÖµµ·Ï °¥°í ´ÛÀ» °ÍÀÔ´Ï´Ù.
#! Àº ½ºÅ©¸³Æ® Á¦ÀÏ ¾Õ¿¡¼ ÀÌ ÆÄÀÏÀÌ ÁöÁ¤ÇÑ ¸í·É¾î ÇØ¼®±â·Î ÇØ¼®ÇÒ ¸í·É¾îµéÀÇ ÁýÇÕÀ̶ó´Â °ÍÀ» ¾Ë·ÁÁÝ´Ï´Ù. #!Àº µÎ ¹ÙÀÌÆ®ÀÇ " ¸ÅÁ÷ ³Ñ¹ö" ·Î¼, ½ÇÇà °¡´ÉÇÑ ½© ½ºÅ©¸³Æ®¶ó´Â °ÍÀ» ³ªÅ¸³»´Â Ưº°ÇÑ Ç¥½ÃÀÚÀÔ´Ï´Ù. (man magicÀ» Çϸé Àç¹Õ´Â ÁÖÁ¦ÀÇ À̾߱âµéÀ» º¼ ¼ö ÀÖ½À´Ï´Ù). #! µÚ¿¡ ³ª¿À´Â °ÍÀº °æ·ÎÀ̸§ÀÔ´Ï´Ù. ¸í·É¾îµéÀ» ÇØ¼®ÇÒ ÇÁ·Î±×·¥ÀÇ À§Ä¡¸¦ ³ªÅ¸³»´Âµ¥ ±× ÇÁ·Î±×·¥ÀÌ ½©ÀÎÁö, ÇÁ·Î±×·¥ ¾ð¾îÀÎÁö, ȤÀº À¯Æ¿¸®Æ¼ÀÎÁö¸¦ ³ªÅ¸³À´Ï´Ù. À̰ɷΠ¾î¶² ƯÁ¤ÇÑ ½©À̳ª ÇÁ·Î±×·¥À» ºÒ·¯¼ ÇØ¼®½Ãų °ÍÀÎÁö¸¦ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù.
#!/bin/sh #!/bin/bash #!/bin/awk #!/usr/bin/perl #!/bin/sed #!/usr/bin/tcl |
À§¿¡¼ °¢ ÁÙµéÀº ´Ù¸¥ ¸í·É¾î ÇØ¼®±â¸¦ ºÎ¸£°í ÀÖ½À´Ï´Ù. ±âº» ½©(¸®´ª½º¿¡¼´Â /bin/bash)À̳ª ´Ù¸¥ °ÍµéÀ» ºÎ¸£°í ÀÖ½À´Ï´Ù. °ÅÀÇ ¸ðµç »ó¿ë À¯´Ð½º º¯Á¾µé¿¡¼ ±âº» º» ½©ÀÎ #!/bin/shÀ» ¾²¸é ºñ·Ï bash¸¸ °¡Áö°í ÀÖ´Â ±â´ÉµéÀ» ¸ø ¾²°Ô µÈ´Ù ÇÒ Áö¶óµµ ¸®´ª½º°¡ ¾Æ´Ñ °÷¿¡¼µµ ¾µ ¼ö ÀÖ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù (ÀÌ ½ºÅ©¸³Æ®´Â POSIX sh Ç¥ÁØÀ» µû¸£´Â °Ô µË´Ï´Ù).
"#!" µÚ¿¡ ³ª¿À´Â °æ·Î´Â Á¤È®ÇØ¾ß ÇÕ´Ï´Ù. ¸¸¾à Ʋ¸®°Ô Àû´Â´Ù¸é ½ºÅ©¸³Æ®¸¦ µ¹·ÈÀ» ¶§ °ÅÀÇ ´ëºÎºÐ Command not found¶ó´Â °á°ú¸¸ º¸°Ô µÉ °ÍÀÔ´Ï´Ù.
½ºÅ©¸³Æ® ¾È¿¡¼ ³»ºÎ ½© Áö½ÃÀÚ¸¦ ¾È ¾²°í ÀϹÝÀûÀÎ ½Ã½ºÅÛ ¸í·É¾îµé¸¸ ¾´´Ù¸é #!Àº ¾È ½áµµ ±¦Âú½À´Ï´Ù. À§ÀÇ 2¹ø ¿¹Á¦¿¡¼´Â #!ÀÌ ÇÊ¿äÇѵ¥ lines=50À̶ó´Â ½© Àü¿ë »ý¼ºÀÚ¸¦ ½á¼ º¯¼ö¿¡ °ªÀ» ´ëÀÔÇϰí ÀÖ½À´Ï´Ù. #!/bin/shÀÌ ¸®´ª½º¿¡¼ ±âº» ½© ÇØ¼®±âÀÎ /bin/bash À» ºÎ¸£°í ÀÖ´Â °Í¿¡ ÁÖÀÇÇϽʽÿÀ.
중요: ÀÌ ¹®¼´Â ½ºÅ©¸³Æ®¸¦ ¸¸µé ¶§ ¸ðµâº° Á¢±Ù ¹æ½ÄÀ» »ç¿ëÇÕ´Ï´Ù. ¾ÕÀ¸·Î À¯¿ëÇÏ°Ô ¾µ ¸¸ÇÑ ½ºÅ©¸³Æ® Á¶°¢µéÀ» ¸ð¾Æ µÎ±â ¹Ù¶ø´Ï´Ù. ³ªÁß¿¡´Â ¾ÆÁÖ Å©°í ¸ÚÁø °ÍÀ» ¸¸µé¾î ³¾ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ ½ºÅ©¸³Æ® Á¶°¢Àº ½ºÅ©¸³Æ®°¡ ¿øÇÏ´Â ÀÎÀÚ¸¦ ¹Þ¾Ò´ÂÁö È®ÀÎÇØ ÁÝ´Ï´Ù.
if [ $# -ne ¿øÇÏ´Â_ÀÎÀÚÀÇ_¼ö ] then echo "»ç¿ë¹ý: `basename $0` ¾î¶²°Íµé" exit $WRONG_ARGS fi