본문 바로가기
[개취] 초보 리눅스 이야기

쉘 스크립트 자동화로 리눅스 업무 효율 200% 높이기

by 동동이y 2025. 6. 29.
728x90
반응형

리눅스에서 반복 업무를 자동화하는 가장 강력한 도구, 쉘 스크립트! 사용법부터 실전 예제까지 한눈에 확인하세요.


쉘 스크립트란?

리눅스에서 사용하는 일련의 명령어를 텍스트 파일에 저장해 순차적으로 실행할 수 있는 파일을 **쉘 스크립트(shell script)**라고 합니다. .sh 확장자를 가지며, 주로 Bash를 기반으로 작성됩니다.


쉘 스크립트를 써야 하는 이유

  • 반복 작업 자동화 (예: 백업, 로그 정리)
  • 시스템 관리의 일관성 확보
  • 오류 발생률 감소 및 시간 절약
  • 크론탭(crontab)과 연동 시 강력한 스케줄링 기능 제공

리눅스 쉘 스크립트, 자동화, Bash, crontab, 스크립트 예제, 리눅스 자동화


쉘 스크립트 작성법 Step-by-Step

1단계. 기본 구조 이해하기

#!/bin/bash
# 주석: 백업 스크립트 예제
DATE=$(date +%F)
BACKUP_DIR="/backup/$DATE"
mkdir -p $BACKUP_DIR
cp -r /home/user/data $BACKUP_DIR
  • #!/bin/bash: 스크립트 해석기를 지정
  • $(...): 명령어 치환
  • mkdir, cp: 기본 리눅스 명령어

2단계. 실행 권한 주기

chmod +x backup.sh

3단계. 테스트 실행하기

./backup.sh

실전 예제 5가지

1. 매일 자동 백업

#!/bin/bash
DATE=$(date +%F)
mkdir -p /backup/$DATE
cp -r /var/www/html /backup/$DATE

2. 로그 정리 스크립트

#!/bin/bash
find /var/log -name "*.log" -mtime +7 -exec rm -f {} \;

3. 서비스 상태 모니터링

#!/bin/bash
if systemctl is-active --quiet nginx; then
  echo "nginx OK"
else
  systemctl restart nginx
fi

4. 디스크 용량 경고 메일

#!/bin/bash
THRESHOLD=90
USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
  echo "Disk usage critical: $USAGE%" | mail -s "Disk Alert" admin@example.com
fi

5. 시스템 정보 리포트

#!/bin/bash
HOST=$(hostname)
UPTIME=$(uptime -p)
MEMORY=$(free -m | grep Mem | awk '{print $3"MB / "$2"MB"}')
echo -e "Host: $HOST\nUptime: $UPTIME\nMemory: $MEMORY" > /tmp/sysreport.txt

crontab과의 연동으로 자동 실행

0 3 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
  • 위 설정은 매일 새벽 3시에 자동 백업을 실행

 지금 바로 crontab -e 명령어로 스크립트를 등록해보세요!


고급 팁: 인자 전달과 조건문 활용

#!/bin/bash
if [ $# -eq 0 ]; then
  echo "사용법: $0 [파일명]"
  exit 1
fi
FILE=$1
if [ -f "$FILE" ]; then
  echo "$FILE 파일 존재함"
else
  echo "$FILE 파일 없음"
fi

쉘 스크립트 vs Python 자동화 비교

항목                                                           쉘 스크립트                                     Python

실행 환경 기본 포함 별도 설치 필요
간결성 짧고 빠름 구조적, 장황함
복잡한 로직 제한적 뛰어남
시스템 연동 강력함 중간

복잡한 연산은 Python, 시스템 자동화는 쉘 스크립트로 적절히 분리하세요!


FAQ: 쉘 스크립트 관련 질문들

Q1. 쉘 스크립트 실행이 안 돼요.

A: chmod +x script.sh로 실행 권한을 부여했는지 확인하세요.

Q2. crontab에서 환경변수가 다르게 작동해요.

A: 스크립트에 PATH, HOME 등을 명시적으로 선언하세요.

Q3. 쉘 스크립트 내 변수는 어떻게 선언하나요?

A: 변수명=값 형식이며, 참조 시 $변수명으로 사용합니다.

Q4. 에러 로그는 어디로 저장되나요?

A: 2>&1을 통해 표준 에러를 로그 파일로 리디렉션하세요.

Q5. GUI에서 쉘 스크립트 자동화 가능한가요?

A: GNOME Schedule 등 GUI 기반 크론 관리 툴을 사용할 수 있습니다.


마무리하며

리눅스에서 업무를 자동화하고 효율을 극대화하려면 쉘 스크립트는 반드시 익혀야 할 기술입니다. 위 예제와 방법들을 실제 업무에 적용하면 시간과 자원을 절약할 수 있으며, 안정적인 운영 환경을 유지할 수 있습니다.

📌 지금 바로 간단한 스크립트를 하나 작성해보고, crontab에 연동해보세요!

📍 이후엔 systemd 서비스 등록, logrotate 연동 등도 함께 배워보면 좋습니다.

📌 쉘 자동화, crontab, logrotate 글은 본 블로그에서 계속 업데이트되니 구독 잊지 마세요!

728x90
반응형

댓글