[Linux] 리눅스 자동화: 셸 스크립트 실전 예제

리눅스 환경에서 반복적인 작업을 수작업으로 처리하고 계신가요?
셸 스크립트(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로 디스크 정보 확인
  • awksed로 사용률 추출
  • 임계치 초과 시 이메일 알림 전송

 

오래된 파일 자동 삭제 스크립트

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을 활용해 정기적으로 실행하는 것도 알아두시면 좋습니다.