AWS EC2에서 리눅스 자동화 스크립트 5개를 만든 방법
출처: Dev.to
2026년 5월에 AWS EC2에서 Ubuntu 22.04 서버를 하나 띄우고 SSH로 접속해 한 달 내내 실제 작업을 진행했습니다.
제가 만든 것들을 소개합니다.
| 도구 | 상세 내용 |
|---|---|
| 클라우드 | AWS EC2 t2.micro |
| 운영체제 | Ubuntu 22.04 LTS |
| 편집기 | VS Code Codespaces |
| 인증 | SSH 키 기반 인증 |
| 자동화 | Bash 스크립팅 + cron 작업 |
- 사용자 및 그룹 관리
- 파일 권한 관리 (
chmod,chown) - 프로세스 관리 (
ps,top,kill,systemctl) - 네트워킹 기본 (
ss,curl,UFW,DNS) apt를 이용한 패키지 관리
자동화 & 스크립팅
- Bash 스크립팅 — 함수와 검증
- 로그 관리
- cron 작업 스케줄링
- SSH 워크플로우 (
scp,rsync) grep,awk,sed를 활용한 로그 분석
🔧 5개의 자동화 스크립트
한 달이 끝날 무렵, 프로덕션 수준의 Bash 스크립트 5개를 만들고 자동화했습니다.
1. 서버 상태 모니터링 스크립트
다음 항목을 확인합니다.
- CPU 사용량
- RAM 사용량
- 디스크 사용량
- 서비스 상태
- 인터넷 연결 여부
cron 으로 15분마다 실행됩니다.
./server_health.sh
예시 출력
================================================
SERVER HEALTH CHECK REPORT
================================================
Date: 2026-05-12 10:00:00
Hostname: ip-172-xx-xx-xx
--- CPU Usage ---
✅ CPU is OK (2.3%)
--- Memory Usage ---
✅ RAM is OK (45%)
--- Services Status ---
✅ ssh: RUNNING
✅ nginx: RUNNING
✅ docker: RUNNING
--- Network ---
✅ Internet: CONNECTED
================================================
2. 디스크 사용량 알림 스크립트
파티션을 스캔하고 사용량이 임계값을 초과하면 알림을 생성합니다.
- 임계값 기반 알림
- 파티션 모니터링
- 로그 생성
- 색상 구분 터미널 출력
cron 으로 매시간 실행됩니다.
3. 로그 정리 스크립트
- 오래된 로그 압축
- 오래된 로그 삭제
- 디스크 사용량 자동 감소
find, gzip, mtime 필터를 이용해 로그 보존 정책을 관리합니다.
매주 일요일 실행됩니다.
4. 사용자 프로비저닝 스크립트
일관된 설정으로 사용자를 생성합니다.
- 사용자명 검증
- 그룹 할당
- 홈 디렉터리 생성
- 임시 비밀번호 생성
- CSV 파일을 이용한 배치 생성
sudo ./user_creation.sh --file users.csv
5. 백업 스크립트
tar.gz 아카이브로 압축 백업을 생성합니다.
- 백업 검증
- 보존 정책
- 오래된 백업 자동 정리
- 로그 및 무결성 검사
매일 새벽 2시에 실행됩니다.
cron 설정 예시
# Health check — every 15 minutes
*/15 * * * * /home/ubuntu/scripts/server_health.sh >> /home/ubuntu/logs/health_cron.log 2>&1
# Disk alerter — every hour
0 * * * * /home/ubuntu/scripts/disk_alerter.sh >> /home/ubuntu/logs/disk_cron.log 2>&1
# Backup — daily at 2 AM
0 2 * * * /home/ubuntu/scripts/backup.sh >> /home/ubuntu/logs/backup_cron.log 2>&1
# Log cleaner — every Sunday at 11 PM
0 23 * * 0 /home/ubuntu/scripts/log_cleaner.sh >> /home/ubuntu/logs/cleaner_cron.log 2>&1
설정이 완료되면 서버가 일상적인 유지보수를 자동으로 처리합니다.
처음엔 기본 터미널 명령이 낯설었지만, 원격 서버에서 매일 작업하면서 Linux를 명령줄로 다루는 것이 자연스러워졌습니다.
빠른 방법은 없으며, 매일 직접 해보는 수밖에 없습니다.
가장 큰 사고 전환은 “반복 작업을 자동화할 수 있을까?” 라는 생각을 바로 떠올리는 것이었습니다.
이 사고 전환만으로도 스크립팅이 훨씬 실용적이고, 솔직히 더 재미있어졌습니다.
실제 EC2 인스턴스에서 작업하면서 로컬 환경에서는 쉽게 겪지 못하는 문제들을 마주했습니다.
- SSH 인증 문제
- 파일 권한 문제
- cron 디버깅
- 디스크 사용량 관리
- 로그 분석 워크플로우
실제 서버에서 문제를 해결하면서 문서에 적힌 명령어만 보는 것보다 훨씬 많은 것을 배웠습니다.
다음 단계는 AWS 핵심 인프라(VPC, IAM, RDS, Terraform)로 확장하는 것입니다.
그 작업은 2026년 6월에 시작됩니다. 비슷한 길을 걷고 있다면 함께 지켜봐 주세요.
모든 스크립트와 문서는 오픈소스입니다:
👉 https://github.com/tanayjdev/linux-bash-scripts
BCA 학생 • 클라우드·DevOps 엔지니어 지망생