종합 부팅 진단 스크립트(kubuntu라면 nano 대신 kate)

nano ~/boot-error-check.sh

 

스크립트 내용:

#!/bin/bash

echo "=== 부팅 오류 종합 분석 ==="
echo "분석 시작: $(date)"
echo "부팅 시간: $(uptime -s)"
echo

# 1. 부팅 성능 분석
echo "=== 부팅 성능 분석 ==="
systemd-analyze
echo

echo "=== 가장 느린 서비스 TOP 10 ==="
systemd-analyze blame | head -10
echo

# 2. 실패한 서비스
echo "=== 실패한 서비스 ==="
FAILED_SERVICES=$(systemctl list-units --failed --no-legend | wc -l)
if [ $FAILED_SERVICES -gt 0 ]; then
    echo "⚠️  실패한 서비스 ${FAILED_SERVICES}개 발견:"
    systemctl list-units --failed --no-legend
else
    echo "✅ 모든 서비스 정상"
fi
echo

# 3. 부팅 중 심각한 오류
echo "=== 부팅 중 심각한 오류 (ERROR/CRITICAL) ==="
CRITICAL_ERRORS=$(sudo journalctl -b -p err --no-pager | wc -l)
if [ $CRITICAL_ERRORS -gt 0 ]; then
    echo "⚠️  심각한 오류 ${CRITICAL_ERRORS}개 발견:"
    sudo journalctl -b -p err --no-pager
else
    echo "✅ 심각한 오류 없음"
fi
echo

# 4. 부팅 중 경고
echo "=== 부팅 중 경고 메시지 ==="
WARNING_COUNT=$(sudo journalctl -b -p warning --no-pager | grep -v -E "err|error" | wc -l)
if [ $WARNING_COUNT -gt 0 ]; then
    echo "⚠️  경고 메시지 ${WARNING_COUNT}개 발견:"
    sudo journalctl -b -p warning --no-pager | grep -v -E "err|error" | tail -20
else
    echo "✅ 경고 메시지 없음"
fi
echo

# 5. 커널 메시지 오류
echo "=== 커널 메시지 오류 ==="
KERNEL_ERRORS=$(sudo dmesg | grep -i -E "error|fail|critical" | wc -l)
if [ $KERNEL_ERRORS -gt 0 ]; then
    echo "⚠️  커널 오류 ${KERNEL_ERRORS}개 발견:"
    sudo dmesg | grep -i -E "error|fail|critical"
else
    echo "✅ 커널 오류 없음"
fi
echo

# 6. 하드웨어 관련 문제
echo "=== 하드웨어 초기화 문제 ==="
HW_ISSUES=$(sudo dmesg | grep -i -E "acpi.*error|pci.*fail|usb.*error|firmware.*fail" | wc -l)
if [ $HW_ISSUES -gt 0 ]; then
    echo "⚠️  하드웨어 문제 ${HW_ISSUES}개 발견:"
    sudo dmesg | grep -i -E "acpi.*error|pci.*fail|usb.*error|firmware.*fail"
else
    echo "✅ 하드웨어 초기화 정상"
fi
echo

# 7. 파일시스템 마운트 문제
echo "=== 파일시스템 마운트 상태 ==="
MOUNT_ERRORS=$(sudo journalctl -b | grep -i -E "mount.*fail|filesystem.*error" | wc -l)
if [ $MOUNT_ERRORS -gt 0 ]; then
    echo "⚠️  마운트 문제 ${MOUNT_ERRORS}개 발견:"
    sudo journalctl -b | grep -i -E "mount.*fail|filesystem.*error"
else
    echo "✅ 파일시스템 마운트 정상"
fi
echo

# 8. 네트워크 초기화
echo "=== 네트워크 초기화 상태 ==="
NETWORK_ERRORS=$(sudo journalctl -b | grep -i -E "network.*fail|dhcp.*error|dns.*fail" | wc -l)
if [ $NETWORK_ERRORS -gt 0 ]; then
    echo "⚠️  네트워크 문제 ${NETWORK_ERRORS}개 발견:"
    sudo journalctl -b | grep -i -E "network.*fail|dhcp.*error|dns.*fail"
else
    echo "✅ 네트워크 초기화 정상"
fi
echo

# 9. 전체 요약
echo "=== 부팅 상태 요약 ==="
echo "실패한 서비스: ${FAILED_SERVICES}개"
echo "심각한 오류: ${CRITICAL_ERRORS}개"
echo "경고 메시지: ${WARNING_COUNT}개"
echo "커널 오류: ${KERNEL_ERRORS}개"
echo "하드웨어 문제: ${HW_ISSUES}개"
echo "마운트 문제: ${MOUNT_ERRORS}개"
echo "네트워크 문제: ${NETWORK_ERRORS}개"
echo

TOTAL_ISSUES=$((FAILED_SERVICES + CRITICAL_ERRORS + KERNEL_ERRORS + HW_ISSUES + MOUNT_ERRORS + NETWORK_ERRORS))
if [ $TOTAL_ISSUES -eq 0 ]; then
    echo "🎉 부팅 과정에서 심각한 문제 없음!"
else
    echo "⚠️  총 ${TOTAL_ISSUES}개의 문제 발견됨"
fi

echo
echo "분석 완료: $(date)"

 

실행:

chmod +x ~/boot-error-check.sh
./boot-error-check.sh

 

+ Recent posts