- Today
- Total
Notice
Recent Posts
Recent Comments
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
Tags
- PLSQL
- 트러블슈팅
- mysqli
- PDO
- 코덱스
- MariaDB
- 오류해결
- dbeaver
- 프로시저
- sql
- 클론코딩
- 엘리멘터
- 오라클
- 이클립스
- spring boot
- 의존성주입
- url파라미터
- Oracle
- 쿼리개선
- 비주얼코드
- 오블완
- 티스토리챌린지
- TIL
- 워스프레스
- javascript
- iframe
- 환경세팅
- 워드프레스
- Hostinger
- 백엔드
Archives
개발 공부중
[LINUX] 셸 스크립트를 자동으로 실행시키는 크론탭(crontab) 사용하기 본문
특정 폴더에 있는 파일들을 매월 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
(로그에 대한 고민
로그를 연속으로 쌓을건지, 날짜 별로 쌓을건지
로그는 쉘스크립트 내부에서 로그 저장할지, 크론탭 자체적으로 로그를 만들어 저장할지
정리는 다음 글에서 정리)
'SERVER' 카테고리의 다른 글
| [LINUX] 크론탭이 갑자기 실행되지 않았을 경우, 오류 로그 확인과 해결방법 (0) | 2026.07.23 |
|---|---|
| [LINUX] 서버 용량(디스크) 체크하는 방법 (du/df) (1) | 2026.01.27 |
| [LINUX] MobaXterm에서 Alias(별칭) 설정 방법 (0) | 2026.01.13 |
| [error] 503 Service Temporarily Unavailable 해결방법 (0) | 2024.11.18 |
Comments
