리눅스 환경에서 반복적인 작업을 수작업으로 처리하고 계신가요?
셸 스크립트(Shell Script)를 이용하면 이런 작업을 자동화할 수 있습니다.
실무에서 자주 사용되는 셸 스크립트 예제를 3가지 소개해드리겠습니다.
각 예제는 Bash 기반이며, 서버 운영이나 관리에 바로 활용할 수 있습니다.
로그 백업 및 압축 스크립트
일정 기간 동안 쌓인 로그 파일을 백업하고 압축하는 스크립트입니다.
#!/bin/bash
LOG_DIR="/var/log/myapp"
BACKUP_DIR="/backup/logs"
TODAY=$(date +%F)
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/logs_$TODAY.tar.gz" "$LOG_DIR"
echo "[$TODAY] 로그 백업 완료: logs_$TODAY.tar.gz"
포인트
- 날짜별로 압축 백업 생성
tar -czf
로 gzip 압축- cron과 연동하면 매일 자동 실행 가능
디스크 공간 경고 알림 스크립트
디스크 사용량이 80%를 초과하면 경고 메시지를 출력하는 스크립트입니다.
#!/bin/bash
THRESHOLD=80
EMAIL="admin@example.com"
df -H | grep '^/dev/' | while read line
do
USAGE=$(echo $line | awk '{ print $5 }' | sed 's/%//')
PART=$(echo $line | awk '{ print $1 }')
if [ $USAGE -gt $THRESHOLD ]; then
echo "경고: $PART 파티션 사용량이 ${USAGE}%를 초과했습니다." | mail -s "디스크 사용 경고" $EMAIL
fi
done
포인트
df
로 디스크 정보 확인awk
와sed
로 사용률 추출- 임계치 초과 시 이메일 알림 전송
오래된 파일 자동 삭제 스크립트
7일 이상 된 임시 파일을 주기적으로 삭제해주는 스크립트입니다.
#!/bin/bash
TARGET_DIR="/tmp/myapp"
DAYS=7
find "$TARGET_DIR" -type f -mtime +$DAYS -exec rm -f {} \;
echo "$(date): $DAYS일 이상 된 파일 삭제 완료" >> /var/log/cleanup.log
포인트
find -mtime +N
: N일 이상 지난 파일 탐색-exec rm
: 조건에 맞는 파일 삭제- 로그 파일로 실행 결과 기록
스크립트로 시간을 절약
셸 스크립트를 활용하면 단순 반복 작업을 자동화하고, 사람이 놓치기 쉬운 부분도 안정적으로 처리할 수 있습니다.
특히 백업, 모니터링, 정리 작업은 스크립트로 처리하면 관리가 훨씬 수월해져요.
예제를 기반으로 자신만의 자동화 스크립트를 만들어보고, cron을 활용해 정기적으로 실행하는 것도 알아두시면 좋습니다.
'개발 > 리눅스' 카테고리의 다른 글
[Linux] 리눅스 성능 튜닝 기본 가이드 (2) | 2025.07.24 |
---|---|
[Linux] .bashrc와 .bash_profile 설정 차이 이해하기 (1) | 2025.07.23 |
[Linux] 변수, 조건문, 반복문으로 간단한 스크립트 작성하기 (0) | 2025.07.21 |
[Linux] Bash 스크립트 기초 문법 배우기 (0) | 2025.07.20 |
[Linux] logrotate로 로그 파일 관리 자동화하기 (1) | 2025.07.19 |