28Àå . ÀÚµ¿È­ ÀÛ¾÷

¸®´ª½º ȯ°æ¿¡¼­ ÁöÁ¤ ³¯Â¥, ½Ã°£¿¡ ¶Ç´Â ½Ã½ºÅÛ ºÎÇÏ Æò±ÕÀÌ ÁöÁ¤µÈ ¼ýÀÚ ÀÌÇÏ·Î ³»·Á°¥¶§ ÀÛ¾÷ÀÌ ÀÚµ¿À¸·Î ½ÇÇàµÇµµ·Ï ¼³Á¤ °¡´ÉÇÕ´Ï´Ù. Red Hat Linux´Â Áß¿äÇÑ ½Ã½ºÅÛ ÀÛ¾÷ÀÌ ÀÚµ¿À¸·Î ½ÇÇàµÇ¾î ½Ã½ºÅÛÀ» ¾÷µ¥ÀÌÆ®Çϵµ·Ï ¹Ì¸® ¼³Á¤ÇØ ³õ¾Ò½À´Ï´Ù. ¿¹¸¦ µé¾î locate ¸í·ÉÀ» »ç¿ëÇÏ¿© slocate µ¥ÀÌÅͺ£À̽º´Â ¸ÅÀÏ ¾÷µ¥ÀÌÆ®µË´Ï´Ù. ½Ã½ºÅÛ °ü¸®ÀÚ´Â ÀÚµ¿È­ ÀÛ¾÷À» »ç¿ëÇÏ¿© ÁÖ±âÀûÀÎ ¹é¾÷, ½Ã½ºÅÛ °¨½Ã, »ç¿ëÀÚ Á¤ÀÇ ½ºÅ©¸³Æ® ½ÇÇà°ú °°Àº ¿©·¯ ´Ù¾çÇÑ ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

Red Hat Linux¿¡´Â ´ÙÀ½°ú °°Àº 4°¡Áö ÀÚµ¿È­ ÀÛ¾÷ À¯Æ¿¸®Æ¼°¡ ÀÖ½À´Ï´Ù: cron, anacron, at, batch.

28.1. Cron

CronÀº Á¤ÇØÁø ½Ã°£, ÀÏ, ¿ù, ÁÖ¸¶´Ù ¹Ýº¹ÀûÀÎ ÀÛ¾÷À» ½ÇÇàÇϵµ·Ï ½ºÄÉÁÙÇϴµ¥ »ç¿ëµÇ´Â µ¥¸óÀÔ´Ï´Ù.

CronÀº ½Ã½ºÅÛÀÌ °è¼ÓÀûÀ¸·Î ÄÑÁ®ÀÖÀ» °æ¿ì¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù. ¸¸ÀÏ ÀÛ¾÷ÀÌ ½ºÄÉÁÙµÈ ½Ã°£¿¡ ½Ã½ºÅÛÀÌ ²¨Á®ÀÖ´Ù¸é ±× ÀÛ¾÷Àº ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. ÀÛ¾÷ÀÌ Æ¯Á¤ ½Ã°£¿¡ ½ÇÇàµÇÁö ¾Ê°í ÀÏÁ¤ ½Ã°£ ¸¶´Ù ÁÖ±âÀûÀ¸·Î ½ÇÇàµÇµµ·Ï ÇϽ÷Á¸é 28.2 ÀýÀ» ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù. Çѹø¸¸ ½ÇÇàµÇ´Â (one-time) ÀÛ¾÷À» ½ºÄÉÁÙÇϱâ À§Çؼ­´Â 28.3 ÀýÀ» ÂüÁ¶ÇØ º¸½Ê½Ã¿À.

cron ¼­ºñ½º¸¦ »ç¿ëÇϱâ À§Çؼ­´Â ¹Ýµå½Ã vixie-cron RPM ÆÐÅ°Áö°¡ ¼³Ä¡µÇ¾î ÀÖÀ¸¸ç crond ¼­ºñ½º°¡ ½ÇÇà ÁßÀ̾î¾ß ÇÕ´Ï´Ù. ÆÐÅ°Áö ¼³Ä¡ ¿©ºÎ¸¦ ¾Ë¾Æº¸±â À§Çؼ­´Â rpm -q vixie-cron ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù. ¼­ºñ½º ½ÇÇà ¿©ºÎ¸¦ ¾Ë¾Æº¸±â À§Çؼ­´Â /sbin/service crond status ¸í·ÉÀ» »ç¿ëÇϽʽÿÀ.

28.1.1. Cron ÀÛ¾÷ ¼³Á¤Çϱâ

ÁÖ¿ä cron ¼³Á¤ ÆÄÀÏÀÎ /etc/crontab¿¡´Â ´ÙÀ½°ú °°Àº ÁÙÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

óÀ½ 4 ÁÙÀº cron ÀÛ¾÷ÀÌ ½ÇÇàµÇ´Â ȯ°æÀ» ¼³Á¤Çϱâ À§ÇØ »ç¿ëµÈ º¯¼öµéÀÔ´Ï´Ù. SHELL º¯¼ö°ªÀº ½Ã½ºÅÛÀÌ »ç¿ëÇÒ ½© ȯ°æÀÇ Á¾·ù (À§ÀÇ ¿¹½Ã¿¡¼­´Â bash shell)¸¦ Áö½ÃÇÕ´Ï´Ù. ±×¸®°í PATH º¯¼ö´Â ¸í·É ½ÇÇà °æ·Î¸¦ Á¤ÀÇÇÕ´Ï´Ù. cron ÀÛ¾÷ÀÇ °á°ú´Â MAILTO º¯¼ö¿¡ Á¤ÀÇµÈ »ç¿ëÀÚ¿¡°Ô À̸ÞÀÏ·Î º¸³»Áý´Ï´Ù. ¸¸ÀÏ MAILTO º¯¼ö°¡ °ø¹é ¹®ÀÚ¿­(MAILTO="")·Î Á¤Àǵȴٸé, À̸ÞÀÏÀ» º¸³»Áö ¾Ê½À´Ï´Ù. HOME º¯¼ö´Â ¸í·ÉÀ̳ª ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¶§ »ç¿ëÇÒ È¨ µð·ºÅ丮¸¦ ¼³Á¤Çϴµ¥ »ç¿ëµË´Ï´Ù.

/etc/crontab ÆÄÀÏ¿¡¼­ °³º° ¶óÀÎÀº ½ÇÇàÇÒ ÀÛ¾÷À» ³ªÅ¸³»¸ç ´ÙÀ½°ú °°Àº Çü½ÄÀ» °®½À´Ï´Ù:

minute   hour   day   month   dayofweek   command

  • minute — 0 °ú 59 »çÀÌÀÇ Á¤¼ö

  • hour — 0 °ú 23 »çÀÌÀÇ Á¤¼ö

  • day — 1 °ú 31 »çÀÌÀÇ Á¤¼ö (ÁöÁ¤µÈ ¿ù¿¡ ¸Â´Â À¯È¿ÇÑ ³¯Â¥ÀÏ °Í.)

  • month — 1 °ú 12 »çÀÌÀÇ Á¤¼ö (¶Ç´Â ¿ù À̸§ÀÇ ¾àÀÚ. ¿¹, jan, feb, µî)

  • dayofweek — 0°ú 7 »çÀÌÀÇ Á¤¼ö, ¿©±â¼­ 0 ¶Ç´Â 7 Àº ÀÏ¿äÀÏÀ» ÀǹÌÇÔ (¶Ç´Â ÁÖ À̸§ÀÇ ¾àÀÚ. ¿¹, sun, mon µî)

  • command — ½ÇÇàÇÒ ¸í·É¾î (ls /proc >> /tmp/proc¿Í °°Àº ¸í·É¾î ¶Ç´Â »ç¿ëÀÚ°¡ Á÷Á¢ ÀÛ¼ºÇÑ »ç¿ëÀÚ Á¤ÀÇµÈ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¸í·É¾î).

¾Õ¿¡¼­ ¾ð±ÞµÈ °ª¿¡¼­ º°Ç¥ (*)¸¦ »ç¿ëÇÏ½Ã¸é ¸ðµç À¯È¿°ªÀ» ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ¿ù ´ë½Å º°Ç¥¸¦ ÁöÁ¤ÇÑ´Ù¸é ´Ù¸¥ °ªÀÇ ¹üÀ§ ¾È¿¡¼­ ¸Å´Þ¸¶´Ù ¸í·ÉÀ» ½ÇÇàÇÏ°Ô µË´Ï´Ù.

Á¤¼ö °ª »çÀÌ¿¡ ÇÏÀÌÇ (-)À» »ç¿ëÇÏ¿© Á¤¼ö°ªÀÇ ¹üÀ§¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, 1-4´Â Á¤¼ö°ª 1, 2, 3, 4¸¦ ÀǹÌÇÕ´Ï´Ù.

ÄÞ¸¶ (,)·Î ±¸ºÐµÈ °ªÀº ¸ñ·ÏÀ» ÁöÁ¤ÇÕ´Ï´Ù. ¿¹, 3, 4, 6, 8´Â 4°³ÀÇ Æ¯Á¤ Á¤¼ö¸¦ ³ªÅ¸³À´Ï´Ù.

½½·¡½Ã (/)¸¦ »ç¿ëÇÏ¿© ÁֱⰪÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. Á¤¼ö °ªÀº /<integer> ´ÙÀ½¿¡ ³ª¿Â ¹üÀ§¸¸Å­ °¨¼ÒµË´Ï´Ù. ¿¹¸¦ µé¾î 0-59/2¸¦ »ç¿ëÇÏ¿© ¸Å 2ºÐ¸¶´Ù ÀÛ¾÷ÀÌ ½ÇÇàµÇµµ·Ï Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁֱⰪÀº ¶ÇÇÑ º°Ç¥¿Í ÇÔ²² »ç¿ëµÉ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹·Î¼­ */3 °ªÀ» »ç¿ëÇÏ¿© ¸Å 3´Þ¸¶´Ù ÀÛ¾÷ÀÌ ½ÇÇàµÇµµ·Ï ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

¿ì¹°Á¤ÀÚ Ç¥½Ã (#)·Î ½ÃÀÛÇÏ´Â ÁÙÀº ¸ðµÎ ÁÖ¼® ó¸®µÇ¾î ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù.

/etc/crontab ÆÄÀÏ¿¡¼­ º¼ ¼ö ÀÖµíÀÌ ÀÌ ÆÄÀÏÀº run-parts ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¿© ¸Å ½Ã°£, ¸ÅÀÏ, ¸ÅÁÖ ¶Ç´Â ¸Å¿ù ´ÜÀ§·Î /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly µð·ºÅ丮¿¡ ÀÛ¼ºµÈ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÕ´Ï´Ù. ÀÌ µð·ºÅ丮¿¡ ¼ÓÇÑ ÆÄÀÏÀº ¸ðµÎ ½© ½ºÅ©¸³Æ®·Î ÀÛ¼ºµË´Ï´Ù.

½Ã°£, ÀÏ, ÁÖ, ¿ù ´ÜÀ§·Î ½ÇÇàµÇ´Â ÀÛ¾÷ ÀÌ¿ÜÀÇ ½ºÄÉÁì¿¡ ¸ÂÃß¾î ½ÇÇàµÉ cron ÀÛ¾÷ÀÌ ÇÊ¿äÇÏ´Ù¸é, /etc/cron.d µð·ºÅ丮¿¡ Ãß°¡ÇÕ´Ï´Ù. ÀÌ µð·ºÅ丮 ¾ÈÀÇ ¸ðµç ÆÄÀÏÀº /etc/crontab¿Í µ¿ÀÏÇÑ ±¸¹®À» »ç¿ëÇÕ´Ï´Ù. ¿¹ 28-1¿¡ ³ª¿Â ¿¹½Ã¸¦ ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù.

# record the memory usage of the system every monday 
# at 3:30AM in the file /tmp/meminfo
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
# run custom script the first day of every month at 4:10AM
10 4 1 * * /root/scripts/backup.sh

¿¹ 28-1. Crontab ¿¹½Ã

·çÆ® ÀÌ¿ÜÀÇ »ç¿ëÀÚ´Â crontab À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÏ¿© cron ÀÛ¾÷À» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ Á¤ÀÇµÈ ¸ðµç crontab ÆÄÀÏÀº /var/spool/cron µð·ºÅ丮¿¡ ÀúÀåµÇ¸ç crontabÀ» »ý¼ºÇÑ »ç¿ëÀÚ¸íÀ» »ç¿ëÇÏ¿© ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÏ¹Ý »ç¿ëÀڷμ­ crontabÀ» »ý¼ºÇϱâ À§Çؼ­´Â ÇØ´ç »ç¿ëÀÚ·Î ·Î±×ÀÎÇϽŠÈÄ crontab -e ¸í·ÉÀ» »ç¿ëÇÏ¿© »ç¿ëÀÚÀÇ crontabÀ» ÆíÁýÇÕ´Ï´Ù. ÆíÁýÀ» À§Çؼ­´Â VISUAL ¶Ç´Â EDITOR ȯ°æ º¯¼ö¿¡ ÁöÁ¤µÈ ÆíÁý±â¸¦ »ç¿ëÇϽʽÿÀ. ÆÄÀÏÀº /etc/crontab ÆÄÀÏ°ú °°Àº Çü½ÄÀ» »ç¿ëÇÕ´Ï´Ù. crontabÀÇ º¯°æ »çÇ×À» ÀúÀåÇϸé crontabÀº »ç¿ëÀÚ¸í¿¡ µû¶ó ÀúÀåµÇ¾î /var/spool/cron/username ÆÄÀÏ¿¡ ±â·ÏµË´Ï´Ù.

cron µ¥¸óÀº ¸Å ºÐ¸¶´Ù /etc/crontab ÆÄÀÏ, /etc/cron.d/ µð·ºÅ丮¿Í /var/spool/cron µð·ºÅ丮°¡ º¯°æµÇ¾ú´ÂÁö¸¦ È®ÀÎÇÕ´Ï´Ù. ¸¸ÀÏ º¯°æµÈ »çÇ×ÀÌ ¹ß°ßµÇ¸é, º¯°æ »çÇ×Àº ¸Þ¸ð¸®·Î ·ÎµåµË´Ï´Ù. µû¶ó¼­ crontab ÆÄÀÏÀÌ º¯°æµÈ °æ¿ì¿¡µµ µ¥¸óÀ» Àç½ÃÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

28.1.2. CronÀ¸·Î Á¢±ÙÀ» ÅëÁ¦Çϱâ

/etc/cron.allow ¿Í /etc/cron.deny ÆÄÀÏÀ» »ç¿ëÇÏ¿© cronÀ¸·Î Á¢±ÙÀ» Á¦ÇÑÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Á¢±Ù ÅëÁ¦ ÆÄÀÏÀº °¢°¢ÀÇ ÁÙ¸¶´Ù ÇÑ°³ÀÇ »ç¿ëÀÚ¸íÀ» °®½À´Ï´Ù. Á¢±Ù ÅëÁ¦ ÆÄÀÏÀÌ ¼öÁ¤µÇ¾îµµ cron µ¥¸ó (crond)À» Àç½ÃÀÛÇÏ½Ç ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. »ç¿ëÀÚ°¡ cron ÀÛ¾÷À» Ãß°¡Çϰųª »èÁ¦ÇÏ·Á°í ÇÒ ¶§¸¶´Ù ¾×¼¼½º ÅëÁ¦ ÆÄÀÏÀÌ ÀÐÇôÁý´Ï´Ù.

·çÆ® »ç¿ëÀÚ´Â Á¢±Ù ÅëÁ¦ ÆÄÀÏÀÇ ¸ñ·Ï¿¡ »ç¿ëÀÚ¸íÀÌ Æ÷ÇÔµÇÁö ¾Ê¾Æµµ Ç×»ó cronÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

¸¸ÀÏ cron.allow ÆÄÀÏÀÌ Á¸ÀçÇÑ´Ù¸é, ÀÌ ÆÄÀÏ¿¡ ³ª¿­µÈ »ç¿ëÀÚ¸¸ cronÀ» »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç cron.deny ÆÄÀÏÀº ¹«½ÃµË´Ï´Ù.

¸¸ÀÏ cron.allow ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é cron.deny ÆÄÀÏ¿¡ ÁöÁ¤µÈ »ç¿ëÀÚ´Â cronÀ» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.

28.1.3. ¼­ºñ½º ½ÃÀÛ°ú Á¤Áö

cron ¼­ºñ½º¸¦ ½ÃÀÛÇϽ÷Á¸é /sbin/service crond start ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù. ¼­ºñ½º¸¦ Á¤ÁöÇÏ·Á¸é /sbin/service crond stop ¸í·ÉÀ» »ç¿ëÇÏ½Ã¸é µË´Ï´Ù. ºÎÆýà ¼­ºñ½º¸¦ ½ÃÀÛÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ºÎÆýà ÀÚµ¿À¸·Î cron ¼­ºñ½º¸¦ ½ÃÀÛÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â 14 À带 ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù.