53. Use Scripting to Automate System Maintenance Tasks
개요
이 가이드는 bash 스크립팅을 활용하여 시스템 정보 로깅, 중요 데이터 아카이빙 등 필수적인 Linux 시스템 유지 관리 작업을 자동화하는 방법을 설명합니다.
간단한 스크립트 생성
첫 번째 줄에 shebang 라인을 포함하여 스크립트 파일 생성:
#!/bin/bash
#으로 시작하는 주석으로 스크립트 목적을 문서화합니다. 날짜와 커널 버전을 로깅하는 기본 유지 관리 스크립트:
#!/bin/bash
# 스크립트가 실행된 날짜와 시간을 로깅
date >> /tmp/script.log
# 현재 Linux 커널 버전을 로그에 추가
cat /proc/version >> /tmp/script.log
실행 권한 부여 후 실행:
chmod +x script.sh
./script.sh
Bash 내장 명령어로 스크립트 개선
Bash는 조건 논리와 제어 흐름을 위 한 내장 명령어를 제공합니다. help를 실행하면 if, test, alias 등 사용 가능한 내장 명령어를 볼 수 있습니다.
애플리케이션 데이터 아카이빙
디렉토리를 백업하는 아카이브 스크립트:
#!/bin/bash
tar acf /tmp/archive.tar.gz /etc/apt/
아카이브 내용 확인:
tar -tf /tmp/archive.tar.gz
백업 로테이션이 있는 아카이브 스크립트
로테이션 로직으로 데이터 손실 방지:
#!/bin/bash
if test -f /tmp/archive.tar.gz; then
mv /tmp/archive.tar.gz /tmp/archive.tar.gz.OLD
tar acf /tmp/archive.tar.gz /etc/apt/
else
tar acf /tmp/archive.tar.gz /etc/apt/
fi
새 아카이브를 생성하기 전에 이전 아카이브를 이름 변경하여 보존합니다.
종료 상태 코드 이해
명령어는 성공 시 0, 오류 시 0이 아닌 종료 상태 코드를 반환합니다. 조건문으로 명령어 결과 평가:
#!/bin/bash
if grep -q '5' /etc/default/grub; then
echo 'Grub has a timeout of 5 seconds.'
else
echo 'Grub DOES NOT have a timeout of 5 seconds.'
fi
-q 플래그는 grep 출력을 억제하고 종료 상태에만 의존합니다.
일반적인 스크립트 구조
시스템 유지 관리 스크립트는 일반적으로 /etc/cron.daily, /cron.weekly, /cron.monthly 디렉토리에 배치됩니다. shebang, 설명 주석, if/else 문과 반복문을 포함한 구조화된 조건 논리를 따릅니다.