안녕하세요.
거두절미하고 본론만 말씀드릴게요.
리눅스 쉘 스크립트를 한번도 짜본적이 없는데 혼자 이것저것 찾다보니 시간도 오래 걸리고 시행착오가 좀 있어서요.
※. 참고. crontab에서 이미 시간, 요일별 특정 유저로 특정 명령어 수행하는 작업 설정하여 테스트까지 완료했습니다.
허나, 최종 목적은 스크립트 하나에 이 모든 내용이 다 들어가고, crontab에서는 딱 한줄로 해당 쉘만 실행시켜주고 싶습니다.
조건
1. test 라는 계정을 사용해야 한다.
2. 월~토 자정 0시에는 original이라는 파일을 incr 이라는 파일 내용으로 덮어씌운다. (incr >> original)
3. 월~토 자정 0시 5분에는 test 라는 계정으로 XXX 명령어를 실행하며, incr.log 파일에 로그를 추가한다.
4. 일요일 자정 0시에는 original이라는 파일을 full 이라는 파일 내용으로 덮어씌운다. (full >> original)
5. 일요일 자정 0시 5분에는 test 라는 계정으로 XXX 명령어를 실행하며, full.log 파일에 로그를 추가한다.
아직 스크립트 구문에 대해 잘 몰라서 동종업계 고수님들께 여쭙습니다.
비록 많이 부족할지라도 너그러운 마음으로 도와주시면 감사하겠습니다. (좀 더 성장하도록 저도 노력할게용 ㅎ)
¸µÅ© ³»¿ëÀ» Âü°íÇغ¸¼¼¿ä.
ÁÖ±âÀûÀÎ ÀÛ¾÷ ¹× user ÁöÁ¤ ÀÛ¾÷ÀÌ ¼³¸íµÇ¾î Àֳ׿ä.
crontab¿¡¼´Â Àß È°¿ëÇÏ°í ÀÖ½À´Ï´Ù.
µµ¿ò ¸¹ÀÌ ¹Þ¾Ò¾î¿ä. (¹«¾Æ´Ôµµ ´äº¯ ³Ñ °¨»çÇÕ´Ï´Ù ^^)
µû·Î ½ºÅ©¸³Æ®¸¦ Â¥°í
crontab¿¡´Â ½ºÅ©¸³Æ® ½ÇÇà¸í·É¾î¸¸ ³¯·Áº¼·Á°í ÇÕ´Ï´Ù.¤Ð¤Ð
ù ÁÙ¿¡ ¾î¶² ½©À» ¾µ°ÇÁö ÁöÁ¤ÇÏ°í ( ¿¹. #!/bin/bash )
µÎ¹ø° ÁÙ ºÎÅÍ ¸í·ÉÀ» ³ÖÀ¸¸é µË´Ï´Ù.
ÆÄÀÏ ³»¿ëÀ» µ¤¾î ¾²´Â °Å´Â ±×³É cp ¸í·É¾î¸¦ ½á¼ ÆÄÀÏÀ» Ä«ÇÇÇÏ¸é µÉ °Å °°°í
¸í·É½ÇÇà ³»¿ëÀ» ·Î±×¿¡ Ãß°¡ÇÏ·Á¸é
¸í·É >> inc.log
¸¸µé¾î ÁÖ°í
¸¶Áö¸·À¸·Î ÇØ´ç ½©½ºÅ©¸³Æ® ÆÄÀÏÀÌ ½ÇÇà °¡´ÉÇϵµ·Ï chmod ¸í·ÉÀ» »ç¿ëÇÏ¿© ½ÇÇà ÆÄÀÏÀ̶ó°í ÁöÁ¤ÇØÁÖ¸é µË´Ï´Ù.
°¢ ¸í·ÉÀ̳ª ÆÄÀÏÀ§Ä¡ µîÀº °æ·Î Àß È®ÀÎÇϽðí..
date +%a·Î ÇÏ¸é ¿äÀÏÀÌ Ãâ·ÂµÇ´Ï ÀÌ°É ±â¹ÝÀ¸·Î Á¶°Ç¹® ¼³Á¤Çؼ ÇÁ·Î±×·¥ÀÌ º¯°æµÇµµ·Ï ÇÏ¸é µÉ °Í °°½À´Ï´Ù.
¹«½¼¿äÀÏ ¸î½Ã ¸îºÐ¿¡ ÁÖ±âÀûÀ¸·Î ½ÇÇàÇϱâ
https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%B0%98%EB%B3%B5_%EC%98%88%EC%95%BD%EC%9E%91%EC%97%85_cron,_crond,_crontab#.EC.98.88.EC.8B.9C
±×³É ½ºÅ©¸³Æ®·Î ´Ù Â¥°í, ±×°Å ½ÇÇàÇÏ°Ô¸¸ ÇØÁÖ¼¼¿ä
crontab¿¡´Â ½©¸¸ ½ÇÇàÇÏ°Ô²û 1ÁÙ¸¸ ³Ö°í¿ä.
Á¦°¡ ÇÏ´Â »ý°¢°ú ´ÔÀÌ ÇÏ´Â »ý°¢ÀÌ °°Àº°Í°°Àºµ¥?
¾îÂ÷ÇÇ ÆÄÀÏÀ» »ý¼ºÇعö¸®¸é ³»¿ë¹° ¼öÁ¤Çصµ ¼ÒÀ¯±ÇÀÌ ¹Ù²îÁö ¾Ê°í, ·Î±×¿¡ Ãß°¡Çϰųª ÇÏ´Â°Ç ±ÇÇѸ¸ ÀÖÀ¸¸é ¾Æ¹« °èÁ¤À̳ª ´Ù ¶È°°À¸´Ï±î¿ä
2. º°·Î ¾î·Á¿ï°Í ¾øÀÌ echo·Î > Çؼ ÆÄÀÏ À̸§ ÁöÁ¤ÇÏ¸é ³¡ (¾Æ´Ï¸é ¹Ì¸® ¸¸µé¾îµÐ ÆÄÀÏ·Î µ¤¾î¾²±â Çصµ µË´Ï´Ù)
3. runas°°Àº°É ¾²¼¼¿ä (·Î±× ½ÇÇàÀº ÀÚü ·Î±× ÁöÁ¤ ±â´ÉÀÌ ÀÖ´Ù¸é ·Î±×ÆÄÀÏ °æ·Î ÁöÁ¤Çϸé Ãß°¡µÇ´Â °æ¿ì°¡ ´ëºÎºÐÀÌ°í, Ȥ½Ã µ¤¾î¾²±â·Î ÀÛµ¿ÇÑ´Ù¸é Àӽà °æ·Î¿¡ ÀúÀåÈÄ ¸í·É Á¾·á½Ã ÆÄÀÌÇÁ¶óÀÎÀ¸·Î ´øÁ®¼ Ãß°¡ÇؾßÇÒ ÆÄÀÏ ³¡¿¡ µé¾î°¡°Ô Çϼ¼¿ä)
4. ÆÄÀÌÇÁ¶óÀκ¸´Ù´Â ±×³É cp -f¸¦ ÃßõÇÕ´Ï´Ù (ÀÌÈÄ ±ÇÇÑµî ¾È ¸ÂÀ¸¸é ¼öÁ¤)
5. 3À̶û µ¿ÀÏ
±×¸®°í crontab ¼öµ¿À¸·Î Â¥¸é ±ÍÂúÀ¸´Ï±î ±¸±Û¸µÇϸé À¥À¸·Î ½±°Ô Â¥°ÔÇØÁÖ´Â ÆäÀÌÁö ÀÖÀ¸´Ï °Å±â¼ §´ÙÀ½ ³»¿ë¹° ±×´ë·Î ºÙÀ̼¼¿ä
¿©ÀüÈ÷ ÇãÁ¢ÇÏÁö¸¸, 20³âÂë ¸®´ª½º ¾²°í ÀÖÀ¸´Ï ´ëÃæ ¾î¶»°Ôµç ¶§¿ï ¼ö ÀÖÀ»Á¤µµ´Â µÇ´õ±º¿ä
Å©·ÐÅÇ¿¡ ½Ã°£º°·Î ´Ù µî·ÏÇÏ´Â°Ô ½¬¿î°Ç°¡¿ä?
?????
Àü ½ºÅ©¸³Æ®¸¦ Â¥°í
Å©·ÐÅÇ¿¡´Â ½© ½ÇÇà ¸í·É¾î ÇÑÁÙ¸¸ ³Ö°í½Í¾î¼¿ä.
±¸Çö ÇÏ°íÀÚ ÇÏ´Â ±â´ÉÀ» Q&A¸¦ ÀÌ¿ëÇØ¾ß ÇÏ´Â ½Ç·Â¿¡¼´Â crontab¿¡ ÀÏÀÏÀÌ µî·ÏÇÏ´Â°Ô ÆíÇÕ´Ï´Ù.
½ºÅ©¸³Æ® ¿ä·ÉÀÌ »ý±â¸é ½ºÅ©¸³Æ® Çϳª¸¸ µî·ÏÇصµ °¡´ÉÇÏÁÒ.
±¸ÇöÇÏ°íÀÚ ÇÏ´Â ±â´É¿¡ ¿äÀÏÀÌ Æ÷ÇԵǾî Àִµ¥ LOCALEÀ» °í·ÁÇϰųª LOCALEÀ» °í·ÁÇÏÁö ¾Êµµ·Ï º¯°æÇؼ Â¥°Å³ª ÇؾßÇÏ´Â º¹ÀâÇÔÀÌ ÀÖÁÒ.
¾ÖÃÊ¿¡ Å©·ÐÅÇ¿¡¼ ¿äÀϸ¶´Ù ¼öÇàÇÒ ¼ö ÀÖµµ·Ï Áö¿øÇϴµ¥ ±»ÀÌ ½ºÅ©¸³Æ®¿¡¼ ¿äÀÏ ÆĽÌÇϴ°ͺ¸´Ü ½±ÁÒ.
ƯÈ÷ Á÷Á¢°³¹ßÇÒ ¼öÁØÀÌ ¾ÈµÇ°í Áú¹®À» ¿Ã¸®½Ã´Â°É °í·ÁÇϸé ÃæºÐÇÑ Áö½ÄÀÌ ¾øÀ¸¸é ±»ÀÌ ¹«¸®Çؼ ±×°É ÇÒ ÇÊ¿æ ¾ø½À´Ï´Ù.
¹«¾ß´ÔÀÌ ¾Ë·ÁÁֽŠ¸µÅ© Âü°í¸¸ ÇÏ´õ¶óµµ ²Ï Å« µµ¿òÀÌ µÉ °Í °°³×¿ä.
Å©·ÐÅÇÀ» ±»ÀÌ ÇÑÁÙ·Î ÇÒ·Á´Â Àǵµ´Â ¸ð¸£°Ú½À´Ï´Ù¸¸ ±×·¸°Ô ÇÑ´Ù°í Çؼ ±»ÀÌ ÀåÁ¡Àº ¾ø¾î¼¿ä.
Å©·ÐÅÇÀ» ÆíÁýÇÏ´Â °úÁ¤¿¡¼´Â ¿©·¯ ÁÙÀÌ¿©¼ º¸±â ºÒÆíÇÏ´Ù¶ó°í »ý°¢ÇÒ ¼ö ÀÖÁö¸¸, ¿ªÀ¸·Î À¯Áöº¸¼ö°üÁ¡¿¡¼´Â ÀÌ°Ô ¾ðÁ¦ ¾ðÁ¦ ¼öÇàµÇ´ÂÁö ÀÌÇصDZâ ÆíÇÕ´Ï´Ù.
¿¹¸¦ µé¾î ¼¼úÇÑ´ë·Î 0½Ã¿¡ ¼öÇàÈÄ 0½Ã 5ºÐ¿¡ ¼öÇàÇϱâ À§ÇØ
startTime=$(date +%s);
#work
endTime=$(date +%s);
totalTime=$(($endTime-$startTime));
sleepTime= 300 - $(totalTime);
sleep $sleepTime;
ÀÌ·± ½ÄÀ¸·Î ó¸®ÇØÁÖ¾î¾ß Çϴµ¥ À¯Áöº¸¼ö °üÁ¡¿¡¼± ÁÁÀº ÄÚµå´Â ¾Æ´Õ´Ï´Ù.(¾ÖÃÊ¿¡ Á¤È®ÇÏ°Ô 5ºÐ ´ë±â´Â Èûµé±¸¿ä. 1ÃÊ À̳»ÀÇ ¿ÀÂ÷´Â °¨¾ÈÇÏ¼Å¾ß ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¾ÖÃÊ¿¡ ±×°Ô Áß¿äÇÏÁø ¾ÊÀ» °Í °°Áö¸¸¿ä.)
±×¸®°í ÇÁ·Î¼¼½º°¡ ±×¶§±îÁö ¼öÇàÁßÀ̹ǷΠ¸®¼Ò½º ÇØÁ¦°¡ ¾ÈµÇ¹Ç·Î ÁÁÀº ÄÚµå´Â ¾Æ´Õ´Ï´Ù.
crontatab¿¡ 1°³ÀÇ ÅëÇÕ script¸¦ ½ÇÇàÇßÀ»¶§, ÇØ´ç script´Â ¸¶Áö¸· ¸í·É¾î ±îÁö Áö¼ÓÀûÀ¸·Î ¼öÇàµÇ°í ÀÖ¾î¾ß ÇÕ´Ï´Ù.
(crontab µî·Ï½Ã ºÐ´ÜÀ§ ¼³Á¤ °¡´ÉÇϱä ÇÕ´Ï´Ù)
¿¹½Ã·Î 5ºÐÀ» ÀûÀ¸¼Ì´Âµ¥ »óȲ¿¡ µû¶ó 10½Ã°£ÀÇ °£°ÝÀÌ ÀÖ´Ù¸é ±×¸¸ÅÀ» script °¡ µ¹°í Àִ°̴ϴÙ.
¼¹ö ¸®¼Ò½ºµµ Á¡À¯ÇÏ°í... ¿äÀϺ° ½Ã°£º° Á¶°Ç¹® »ç¿ëµµ º¹Àâ?ÇÏ°í.
±¸ÇöÀÌ ÇÊ¿äÇϽøé,
shell script if, ¶Ç´Â shell script case ·Î °Ë»öÇÏ½Ã¸é µÇ°Ú½À´Ï´Ù.
IS_SUNDAY=`date +%u`
IS_HOUR_0=`date +%H`
IS_MIN_5=`date +%M`
if [ "$IS_SUNDAY" = "7" ]
then
echo "IS_SUNDAY : $IS_SUNDAY"
echo "Today is Sunday"
# TODO
if [ "$IS_HOUR_0" = "13" -a "$IS_MIN_5" = "05" ];
then
echo "IS_HOUR_0 : $IS_HOUR_0, IS_MIN_5 : $IS_MIN_5"
echo "--------------"
# TODO
else
echo "IS_HOUR_0 : $IS_HOUR_0, IS_MIN_5 : $IS_MIN_5"
fi
else
echo "IS_SUNDAY : $IS_SUNDAY"
echo "Today is not Sunday"
if [ "$IS_HOUR_0" = "13" -a "$IS_MIN_5" = "05" ]
then
echo "IS_HOUR_0 : $IS_HOUR_0, IS_MIN_5 : $IS_MIN_5"
echo "==============="
# TODO
else
echo "IS_HOUR_0 : $IS_HOUR_0, IS_MIN_5 : $IS_MIN_5"
fi
fi