[Linux] crontab, μ μ€ν¬λ¦½νΈ μ‘°ν©μΌλ‘ 리λ μ€ λ‘κ·Έ κ΄λ¦¬νκΈ° (feat.crontab)
κ°μ(feat. Linux)
* μ μ΄ μμ μ νλκ±°μ§?
π OSλ₯Ό μ¬μ©νλ μκ°λΆν° μ°λ¦¬λ νμμ μΌλ‘ Storage capacity κ΄λ¦¬λ₯Ό νκ² λλ€.
OSκ° μ€μΉλλ©° κΈ°λ³Έμ μΌλ‘ κ°μ Έκ°λ μ©λμ λΊ λλ¨Έμ§μ
νμ λ μ©λμμμ μ°λ¦¬λ OSλ₯Ό μ¬μ©νκ² λλλ°,
κ΄λ¦¬λ₯Ό νμ§ μμΌλ©΄ μλμ°μμ μ°λ¦¬κ° λ 'C:\ λλΌμ΄λΈ' μ μ©λμ΄ λΆμ‘± λλ Mac OSμμ APFSμ Volume μ΄ κ°λμ°¨μ μΌλΆ μλΉμ€κ° λμνμ§ μκ±°λ, μνλ μλ£λ₯Ό λ€μ΄λ‘λ λ°μ§ λͺ»νκ² λλ€.
μ΄ μ¬λ‘κ° μΌλ° λ°μ€ν¬ν λλ λ©νμ΄ μλ μ€λ¬΄μμ μ¬μ©νλ μλ²μ μ μ©λ κ²½μ° λ μ΄μ λ‘κ·Έλ₯Ό μμ μ μμ΄ μλΉμ€κ° μλ²λ¦¬κ² λλ κ²½μ°λ μ¬μ¬μΉ μκ² λ³Ό μ μλ€.
μ¬μ©νμ§ μκ±°λ μ€λλ νμΌλ€μ λ³΄κ΄ μ£ΌκΈ°μ λ°λΌ 보κ΄νλ©° (λ³΄κ΄ μ, μ©λμ μ°¨μ§λ₯Ό μ€μ΄κΈ° μν΄ μμΆνμ¬ λ³΄κ΄) μ ν΄μ§ μΌμ λ λ§νΌμ λ°μ΄ν°λ₯Ό μ§μμ μΌλ‘ μ μ§νμ¬ κ΄λ¦¬ νλκ² OSλ₯Ό μ λλ‘ μ¬μ©ν μ μλ 첫 λ²μ§Έ λ°©λ²μ΄λ€.
μ¬κΈ°μ 보κ΄μ£ΌκΈ°(Crontab)μ μ μ§ κ΄λ¦¬λ₯Ό μν κ°λ¨ν κΈ°λ³Έ μ€ν¬λ¦½νΈ νλ‘κ·Έλλ°(Shell Script)λ₯Ό ν΅ν΄ κ°λ΅νκ² μ¬μ©νκ³ μ νλ€.
보κ΄μ£ΌκΈ°μ νλ‘κ·Έλλ°μ 'Crontab' κ³Ό 'Shell Script' λ₯Ό μ¬μ©νλ μ΄μ λ λͺ¨λ OSμμ λ³λμ λͺ¨λ μ€μΉ μμ΄ κΈ°λ³Έμ μΌλ‘ OS μ λ΄μ₯λμ΄ μ§μνκΈ° λλ¬Έμ΄λ€.
Crontab
Crontab μ΄λ?
Crontabμ 리λ μ€ μ΄μ체μ μμ λ°°μΉ μμ μ μ€μΌμ₯΄λ§ νκΈ° μν νλ‘κ·Έλ¨μΌλ‘, νΉμ μκ° λλ μ κΈ°μ μΈ μ£ΌκΈ°μ λ°λΌ μμ μ΄ μ€νλκ²λ μ€μΌμ₯΄λ§μ ν μ μλ€.
Crontabμ μλμ κ°μ΄ μ£ΌκΈ°λ₯Ό μ€μ ν μ μλ€.
* * * * *
λΆ(0-59) μκ°(0-23) μΌ(1-31) μ(1-12) μμΌ(0-7)
Crontab μ μ©
μ°λ¦¬λ μλ μμ λ₯Ό μ΄μ©νμ¬ κ°λ°/μ΄μ λ± μ€λ¬΄μ μ μ©ν μμ μ΄λ€. μ μ€ν¬λ¦½νΈκ° μ€νλλ©° λ¨κΈ°λ λ‘κ·Έλ€μ κΈ°λ‘νλ κ²κ³Ό κ·Έλ μ§ μμ κ² λ κ°μ§ μ€νμΌ μ€ μνκ³ μ νλ λ΄μ©μ μ ννλλ‘ νλ€. (Tip. μ€λ¬΄μμ logλ₯Ό λ°±μ νλ κ³Όμ μ€ μ€μλμ λ°λΌ μ μ₯νλ λ΄μ©μ΄ λ€λ₯΄λ€.
WEB μ€ν λ‘κ·Έλ, κ°λ¨ν μλΉμ€ μ€ν λ‘κ·Έμ κ°μ κ²½μ°μλ κ³Όκ°νκ² μ§μ°λ©°, μ§μ°λ©΄μ λ¨κΈ°λ λ‘κ·Έλ μ μ₯νμ§ μλλ€. )
#λ§€μ 1μΌ 00μ 00λΆμ /app/cron/ κ²½λ‘μ μλ log_backup.sh νλ‘κ·Έλ¨μ μ€ννλ€.
#μ€νλλ©° λ¨κΈ°λ λ‘κ·Έλ μ μ₯νμ§ μλλ€.
00 00 1 * * /app/cron/log_backup.sh < /dev/null 1>/dev/null 2>&1
#λ§€μ 1μΌ 00μ 00λΆμ /app/cron/ κ²½λ‘μ μλ tomcat_log_backup.sh νλ‘κ·Έλ¨μ μ€ννλ€.
#μ€νλλ©° λ¨κΈ°λ λ‘κ·Έ /app/logs/ κ²½λ‘μ μλ tomcat_cron.log νμΌμ μ μ₯νλ€.
00 00 1 * * /app/cron/tomcat_log_backup.sh > /app/logs/tomcat_cron.log
Shell Script
Shell Script λ?
μ μ€ν¬λ¦½νΈλ κ°λ¨ν λ§νμλ©΄ Unix/Linux 컀맨λλ±μ λμ΄ν΄μ νλ‘κ·Έλλ°νμ¬ μ€ννλ κ²μ΄λ€.
μ΄ λν μμ£Ό κ°λ¨ν νλ‘κ·Έλλ° μ΄κΈ° λλ¬Έμ, μΈμ , μ΄λμ, μ΄λ€ 쑰건μΌλ‘ μ΄λ ν λͺ λ Ήμ μ€νμν¬ κ²μΈκ° ? λ±μ ν μ μλ€.
Shell Script μ μ©
μ°λ¦¬λ μλ μμ λ₯Ό μ΄μ©νμ¬ μ μ©ν΄λ³΄κ³ μ νλ€.
*λ§€λ¬ 1μΌμ μ§λ λ¬ λ°μ΄ν°λ₯Ό λ°±μ νλ©°, 90μΌκ°μ λ°μ΄ν°λ₯Ό μ μ§νλ€. 4κ°μ μ΄μ μ§λ Dirμ μμ νλ€.
#! /bin/sh
. ~/.bash_profile
#System : Backup
#Purpose : Log Backup
#author : ooweat
#λ§€λ¬ 1μΌμ μ§λ λ¬ λ°μ΄ν°λ₯Ό λ°±μ
currdate=`date '+%Y%m%d'`
#μ§λ λ¬
BACKUP_MONTH=`date +%Y%m -d '-1month'`
RM_MONTH=`date +%Y%m -d '-4month'`
FILE_STYLE=*`date +%Y-%m -d '-1month'`*
#Tomcat μ¬μ© μ,
TARGETPATH="/app/service/tomcat/logs"
#κΈ°ν Service μ¬μ© μ,
#TARGETPATH="/app/service/logs"
echo '#####################################################################################'
echo '##########################[ MONTHLY LOG BACKUP START ]###############################'
echo '#############################[ JOBDATE ]#############################################'
echo '############################[ '$currdate' ]#############################################'
echo '#####################################################################################'
cd $TARGETPATH
if [ ! -d $BACKUP_MONTH ]
then
mkdir -p $BACKUP_MONTH
chmod 775 $BACKUP_MONTH
fi
echo '#####################################################################################'
echo 'Log Files Moved On Monthly Dir'
echo '#####################################################################################'
#νμΌ μ΄λ
mv $TARGETPATH/$FILE_STYLE $TARGETPATH/$BACKUP_MONTH/
#λ°±μ
λλ ν λ¦¬λ‘ μ΄λ
cd $TARGETPATH/$BACKUP_MONTH/
echo '#####################################################################################'
echo 'Files xz'
echo '#####################################################################################'
#μμΆ
xz ./*
cd $TARGETPATH
cd $(pwd)
echo '#####################################################################################'
echo 'Delete Old Files'
echo '#####################################################################################'
#μμ±μΌλ‘λΆν°, 90μΌμ΄ μ§λ νμΌ μμ
find $TARGETPATH/* -mtime +90 -exec rm {} \;
echo '#####################################################################################'
echo 'Delete Old Dir'
echo '#####################################################################################'
find $TARGETPATH/$RM_MONTH -exec rmdir {} \;