여러 가지 유용한 Linux 셸 스크립트 예제를 몇 가지 소개하겠습니다. 이 예제들은 파일 및 디렉토리 관리, 시스템 모니터링, 백업 등 다양한 작업을 자동화하는 데 도움이 될 수 있습니다.
1. 파일 및 디렉토리 관리
파일 목록 출력 및 크기 확인
이 스크립트는 지정된 디렉토리의 파일 목록을 출력하고 각 파일의 크기를 확인합니다.
#!/bin/bash
dir_path="/path/to/directory"
# 디렉토리 내 파일 목록 출력
echo "Files in $dir_path:"
ls $dir_path
# 각 파일의 크기 확인
echo "File sizes:"
for file in $dir_path/*; do
if [ -f "$file" ]; then
echo "$(basename $file): $(du -sh $file | cut -f1)"
fi
done
파일 백업
특정 디렉토리의 파일을 백업하는 스크립트입니다.
#!/bin/bash
backup_dir="/path/to/backup_directory"
source_dir="/path/to/source_directory"
# 백업 디렉토리 확인 및 생성
if [ ! -d "$backup_dir" ]; then
mkdir -p $backup_dir
fi
# 파일 백업
cp -r $source_dir/* $backup_dir
echo "Backup completed."
2. 시스템 모니터링 및 리포팅
시스템 리소스 모니터링
현재 시스템의 CPU 사용량과 메모리 사용량을 모니터링하는 스크립트입니다.
#!/bin/bash
echo "CPU usage:"
top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}'
echo "Memory usage:"
free -m | awk 'NR==2{printf "Used: %s MB (%.2f%%)\n", $3,$3*100/$2 }'
로그 파일 분석 및 리포팅
로그 파일에서 특정 패턴을 찾아 리포트하는 스크립트입니다.
#!/bin/bash
log_file="/var/log/syslog"
search_pattern="error"
echo "Error log report:"
grep -i "$search_pattern" $log_file | tail -n 10
3. 시스템 유지 관리
패키지 업데이트 검사 및 자동 업데이트
시스템의 패키지 업데이트를 자동으로 검사하고 필요한 경우 업데이트를 수행하는 스크립트입니다.
#!/bin/bash
echo "Checking for package updates..."
sudo apt update -qy
# 업데이트 가능한 패키지 목록 확인
updates=$(apt list --upgradable 2>/dev/null | grep -v 'Listing...')
if [ -n "$updates" ]; then
echo "Available updates:"
echo "$updates"
echo "Updating packages..."
sudo apt upgrade -qy
echo "Update completed."
else
echo "No updates available."
fi
4. 사용자 관리
사용자 목록과 홈 디렉토리 크기 확인
시스템의 모든 사용자의 홈 디렉토리 크기를 확인하는 스크립트입니다.
#!/bin/bash
echo "Home directory sizes:"
for user in $(ls /home); do
home_size=$(du -sh /home/$user | cut -f1)
echo "User: $user, Home directory size: $home_size"
done
실행 방법
각 예제는 스크립트 파일로 저장하고, 실행 권한을 부여한 후 실행할 수 있습니다.
- 스크립트 파일 생성 및 편집:
nano script_name.sh
- 스크립트 내용 복사 및 붙여넣기 후 저장 (Ctrl + X, Y, Enter).
- 실행 권한 부여:
chmod +x script_name.sh
- 스크립트 실행:
./script_name.sh
이 예제들은 각각 파일 관리, 시스템 모니터링, 패키지 관리 등 다양한 시나리오에 적용될 수 있으며, 필요에 따라 스크립트를 수정하여 자신의 환경에 맞게 확장할 수 있습니다.