리눅스 스크립트입니다.
혹시 초보자도 쉽게 이해할 수 있게
한 구문 구문 상세히 설명해주실분 계실까요?..
#제가 알고 있는 히스토리는 이렇습니다. collector 디렉토리에 실시간으로 로그가 쌓여 다른 곳으로 파싱되는데 이 파싱 기능이 제대로 작동하지 않아 실시간 로그들이 빠르게 처리되지 않고 계속 누적되어 쌓여 디렉토리가 거의 꽉차버렸습니다.
그래서 일단은 collector_bak_20210720 이라는 디렉토리로 어느정도 옮겨놓은 상태이고, 제 상사분께서 아래와 같은 스크립트를 만들어 실행시켰습니다. (해석 좀 부탁드립니다..)
# cat test.sh
#! /bin/bash
filename="collector_bak_20210720" // 실시간 로그 수집 디렉토리인 collector에 데이터가 가득차 이 디렉토리로 좀 옮김.
count=0
limit=100
for temp in `ls $filename`
do
if [ $count -ge $limit ]
then
count=0
sleep 7
fi
#echo "mv $temp collector/" // 실시간 로그 수집 = collector 폴더
mv ${filename}/${temp} collector/
let 'count+=1'
done
do ~ done »çÀÌ°¡ ¹Ýº¹µÇ´Â °Çµ¥,
³»¿ëÀº, temp¿¡ ÆÄÀÏÀ̸§ 1°³°¡ µé¾îÀÖ°í, ÀÌ ÆÄÀÏÀ» collector µð·ºÅ丮·Î ¿Å±â´Â °ÍÀ̳׿ä (mv ...)
ÇѲ¨¹ø¿¡ ¿©·¯ °³¸¦ ¿Å±â´Â °Ô ¾Æ´Ï°í, ÇÑ °³¾¿ ¿Å±é´Ï´Ù.
ÆÄÀÏÀ» 101°³ ¿Å±æ ¶§¸¶´Ù 7Ãʸ¦ ½±´Ï´Ù. -_-;;;;
¼³¸¶ ´«À¸·Î º¸°í ÀÖ´Ù°¡ ¸ØÃß·Á°í... ÇÑ °É±î¿ä?
±×¸®°í´Â collector_bak_20210720/* ÆÄÀÏÀ» collector·Î ¿Å±è. <--- ÀÌ°Í ÇϱâÀü¿¡ collector µð·ºÅ丮´Â ¹Ì¸® ¸¸µé¾î¾ßÇÔ.
±×¸®°í´Â count¸¦ 1 Áõ°¡½ÃÅ´.
½ºÅ©¸³Æ®°¡ ¹º°¡ Á» ¹Ì¿Ï¼ºÀÛ °°±âµµ ÇÕ´Ï´Ù^^
MV¸¦ ²¨²Ù·Î ÇÏ°í Àֳ׿ä "mv ${filename}/${temp} collector/"
2. logrotage¸¦ »ç¿ëÇÏ¸é µÉÅÙµ¥ ¿Ö ±»ÀÌ ÀÌ·±°É
3. ´ëÃâ 1¹ø¸¸ µ¹°³ÇÏ°í cron¿¡ ³ÖÀ¸¸é µÉÅÙµ¥¿ä
#! /bin/bash
: ½© ½ºÅ©¸³Æ®·Î ¹è½Ã ½©À» »ç¿ëÇÔ
filename="collector_bak_20210720" // ½Ç½Ã°£ ·Î±× ¼öÁý µð·ºÅ丮ÀÎ collector¿¡ µ¥ÀÌÅÍ°¡ °¡µæÂ÷ ÀÌ µð·ºÅ丮·Î Á» ¿Å±è.
: µð·ºÅ丮¸¦ ½è±â ¶§¹®¿¡ filenameÀº µð·ºÅ丮¸¦ ÀǹÌ
count=0
: º¯¼öÁ¤ÀÇ(Ä«¿îÆ®) ¹× ÃʱⰪ 0
limit=100
: º¯¼öÁ¤ÀÇ(Ä«¿îÆ®ÀÇ ÃÖ´ë Á¦ÇÑ°ª) ¹× ÃʱⰪ 100
for temp in `ls $filename`
: `´Â ¸í·ÉÀ» ½ÇÇàÇÑ´Ù´Â ÀǹÌ. Áï 'ls µð·ºÅ丮' ½ÇÇàÀ» ÅëÇØ Ãâ·ÂµÇ´Â ÆÄÀÏµé ¸ñ·ÏÀ» ÇϳªÇϳª temp ·Î ¹Þ¾Æ¿Í ·çÇÁ¸¦ µ¹¸²
do
: for¹® ½ÃÀÛÁ¡
if [ $count -ge $limit ]
: Á¶°ÇÀý. countº¯¼ö°¡ limit º¯¼öº¸´Ù Å©°Å³ª °°À»¶§ µ¿ÀÛÇÔ. Áï count(0ºÎÅÍ Çϳª¾¿ Áõ°¡) >= limit(ÃÖ´ë 100) À϶§¸¦ È®ÀÎ.
óÀ½¿¡´Â 0ºÎÅÍ ½ÃÀÛÇϹǷΠ99±îÁö µ¹°í 100ÀÌ µÇ¸é ¾Æ·¡ then ¹®À¸·Î µé¾î°¨
then
: ifÀýÀÇ ½ÃÀÛÁ¡
count=0
: countº¯¼ö¸¦ 0À¸·Î ÃʱâÈ
sleep 7
: ½© ½ºÅ©¸³Æ® ¼öÇàÀ» 7ÃÊ°£ ¸ØÃã.
fi
: ifÀýÀÇ ³¡
#echo "mv $temp collector/" // ½Ç½Ã°£ ·Î±× ¼öÁý = collector Æú´õ
: ¼¥Àº ÁÖ¼®Ã³¸®ÇÑ°Í. ½ÇÇà¾ÈµÊ
mv ${filename}/${temp} collector/
: mv´Â ÆÄÀÏÀ̵¿. mv µð·ºÅ丮/ÆÄÀϸí collector/ À̹ǷΠÀǹ̴ µð·ºÅ丮(collector_bak_20210720) ¾ÈÀÇ ÆÄÀÏÀ» ÇϳªÇϳª ·çÇÁµ¹·Á collector/ Æú´õ ¹ØÀ¸·Î ¿Å°Ü³ÖÀ½
let 'count+=1'
: Ä«¿îÅÍ º¯¼ö 1¾¿ Áõ°¡.
done
: for¹® ³¡³ª´ÂÁ¡
µ¿ÀÛÀ» Çѹ®ÀåÀ¸·Î ¿ä¾àÇϸé, collector_bak_20210720 µð·ºÅ丮³» ÆÄÀÏÀ» 7ÃÊ¿¡ 100°³¾¿ ²÷¾î collector µð·ºÅ丮·Î ¿Å±è..