개발 공부중

[LINUX] 셸 스크립트를 자동으로 실행시키는 크론탭(crontab) 사용하기 본문

SERVER

[LINUX] 셸 스크립트를 자동으로 실행시키는 크론탭(crontab) 사용하기

개발자 leelee 2026. 5. 21. 00:14

특정 폴더에 있는 파일들을 매월 1일에 자동으로 옮기고 싶었다.

그래서 셸 스크립트를 매월 1일에 자동으로 실행하는 크론탭을 사용하기로 했다.

 

진행 흐름정리

쉘스크립트 파일을 먼저 만들고 → 수동 테스트하고 → 크론탭에 등록

 

 

전체 순서

1. 쉘스크립트 파일 생성
2. 스크립트 내용 작성
3. 실행 권한 부여
4. 수동 실행 테스트
5. 로그 확인
6. 크론탭 테스트 등록
7. 실제 매월 1일 스케줄로 변경

 

 

 

1단계. 쉘스크립트 파일 만들기

vi /log.sh #파일 생성/수정

 

 

2단계. 스크립트 내용 작성

입력 모드 : i 

저장 방법 : ESC => :wq => Enter

#!/bin/bash

# 1. 경로 및 기준일 설정
SRC_DIR="/var/log/myapp"
DEST_DIR="/backup/log/myapp"
TODAY=$(date +%Y%m%d)

echo "[$TODAY] 로그 이동 작업을 시작합니다."
mkdir -p "$DEST_DIR"

# 2. 로그 파일 확인 및 이동 (for문 사용)
for file in "$SRC_DIR"/log.log.*; do
    
    # 파일이 실제로 존재하는지 확인
    [ -f "$file" ] || continue
    
    # 파일명 끝의 날짜(YYYYMMDD)만 추출
    file_date="${file##*.}"

    # 3. 추출한 날짜가 오늘보다 과거일 경우(-lt)에만 이동
    # 2>/dev/null 은 날짜가 아닌 문자가 섞였을 때 나는 에러를 조용히 무시합니다.
    if [ "$file_date" -lt "$TODAY" ] 2>/dev/null; then
        mv "$file" "$DEST_DIR/"
        echo " -> 이동 완료: $(basename "$file")"
    fi

done

echo "로그 이동 작업이 종료되었습니다."

 

스크립트 파일 확인

nl -ba /log.sh

 

 

3단계. 실행 권한 부여

chmod 755 /log.sh

 

권한부여 확인

ls -al /log.sh
#실행결과 -rwxr-xr-x  x가 있는걸 확인

 

 

4단계. 수동 실행 테스트 + 로그 남기기 / tail 로 log 결과 확인

/log.sh >> /log.log 2>&1

 

 

5단계. 크론탭 백업

crontab -l > ~/crontab_backup_$(date +%Y%m%d).txt

백업 확인

ls -al ~/crontab_backup_*.txt

 

 

6단계. 크론탭 테스트 등록 ( 매분 실행 테스트 )

crontab -e
* * * * * /log.sh >> log.log 2>&1

 

저장 후 확인

crontab -l
tail -f log.log

 

 

7단계.실제 매월 1일 스케줄 등록

매월 1일 새벽 1시 0분에 log.sh 실행하고 결과는 log.log에 저장

crontab -e
0 1 1 * * /log.sh >> /log.log 2>&1

 

 

(로그에 대한 고민

로그를 연속으로 쌓을건지, 날짜 별로 쌓을건지

로그는 쉘스크립트 내부에서 로그 저장할지, 크론탭 자체적으로 로그를 만들어 저장할지 

정리는 다음 글에서 정리)

Comments