Linux 서버 정보 검색

LinuxBeginner
지금 연습하기

소개

이 프로젝트에서는 Linux 서버에서 시스템 정보를 검색하고 표시하는 방법을 배우게 됩니다. 여러분이 만들 getinfo.sh 스크립트는 서버의 하드웨어, 소프트웨어, 네트워크 구성에 대한 중요한 세부 정보를 빠르게 수집하는 데 사용될 수 있습니다.

👀 미리보기

$ sh getinfo.sh
## 예시
cpu num: 8
memory total: 30 G
memory free: 10867 M
disk size: 20G
system bit: 64
process: 40
software num: 1389
ip: 1.32.X.X

🎯 과제

이 프로젝트에서는 다음을 배우게 됩니다:

  • CPU 개수, 총 메모리, 사용 가능한 메모리, 디스크 크기, 시스템 비트, 실행 중인 프로세스 수, 설치된 소프트웨어 패키지 수, 그리고 서버의 IP 주소를 검색하는 방법.
  • grep, free, df, getconf, ps, dpkg-query, 그리고 ip와 같은 다양한 Linux 명령어와 도구를 사용하여 시스템 정보를 수집하는 방법.
  • 이러한 명령어를 결합하여 서버 상태에 대한 포괄적인 개요를 제공하는 zsh 스크립트를 작성하는 방법.

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 셸 스크립팅을 사용하여 시스템 정보 수집을 자동화하는 방법을 이해합니다.
  • 일반적으로 사용되는 Linux 명령어와 그 응용 프로그램에 익숙해집니다.
  • 중요한 서버 세부 정보를 빠르게 검색하고 표시하기 위해 실행할 수 있는 재사용 가능한 스크립트를 만듭니다.
  • 새롭게 얻은 지식을 적용하여 Linux 시스템을 보다 효과적으로 모니터링하고 문제 해결을 할 수 있습니다.

getinfo.sh 스크립트 생성

이 단계에서는 /home/labex/project 디렉토리에 getinfo.sh 스크립트를 생성합니다.

  1. 텍스트 편집기를 열고 /home/labex/project 디렉토리에 getinfo.sh라는 새 파일을 생성합니다.

  2. 파일 시작 부분에 다음 shebang 라인을 추가합니다:

    #!/bin/zsh

    이 라인은 스크립트가 zsh 셸을 사용하여 실행되어야 함을 지정합니다.

  3. 스크립트에 다음 주석을 추가합니다:

    ## getinfo.sh - Linux System Information Script
    ## This script retrieves CPU, memory, disk, and other information of a Linux server.

    이 주석은 스크립트의 목적에 대한 간략한 설명을 제공합니다.

  4. 파일을 저장합니다.

✨ 솔루션 확인 및 연습

CPU 정보 검색

이 단계에서는 getinfo.sh 스크립트에 CPU 개수를 검색하는 함수를 추가합니다.

  1. 텍스트 편집기에서 getinfo.sh 스크립트를 엽니다.

  2. 스크립트에 다음 함수를 추가합니다:

    ## Function: Retrieve CPU information
    cpu_num=$(grep -c '^processor' /proc/cpuinfo)

    이 함수는 grep 명령을 사용하여 /proc/cpuinfo 파일에서 processor 항목의 수를 계산합니다. 이는 CPU 의 개수를 나타냅니다.

  3. 스크립트에 변경 사항을 저장합니다.

✨ 솔루션 확인 및 연습

메모리 정보 검색

이 단계에서는 getinfo.sh 스크립트에 총 메모리 크기와 사용 가능한 메모리 크기를 검색하는 함수를 추가합니다.

  1. 텍스트 편집기에서 getinfo.sh 스크립트를 엽니다.

  2. 스크립트에 다음 함수를 추가합니다:

    ## Function: Retrieve total memory size (in GB)
    memory_total=$(free -g | awk '/^Mem:/ {print $2}')
    
    ## Function: Retrieve available memory size (in MB)
    memory_free=$(free -m | awk '/^Mem:/ {print $4}')

    첫 번째 함수는 -g 옵션과 함께 free 명령을 사용하여 총 메모리 크기를 기가바이트 (GB) 단위로 검색합니다. 두 번째 함수는 -m 옵션과 함께 free 명령을 사용하여 사용 가능한 메모리 크기를 메가바이트 (MB) 단위로 검색합니다.

  3. 스크립트에 변경 사항을 저장합니다.

✨ 솔루션 확인 및 연습

디스크 정보 검색

이 단계에서는 getinfo.sh 스크립트에 루트 디렉토리에 마운트된 파일 시스템의 총 크기를 검색하는 함수를 추가합니다.

  1. 텍스트 편집기에서 getinfo.sh 스크립트를 엽니다.

  2. 스크립트에 다음 함수를 추가합니다:

    ## Function: Retrieve total disk size of the root filesystem (in GB)
    disk_size=$(df -h / | awk '/\// {print $2}')

    이 함수는 -h 옵션과 함께 df 명령을 사용하여 루트 디렉토리 (/) 에 마운트된 파일 시스템의 총 크기를 검색한 다음, awk를 사용하여 크기 값을 추출합니다.

  3. 스크립트에 변경 사항을 저장합니다.

✨ 솔루션 확인 및 연습

시스템 비트 정보 검색

이 단계에서는 getinfo.sh 스크립트에 시스템 비트 정보를 검색하는 함수를 추가합니다.

  1. 텍스트 편집기에서 getinfo.sh 스크립트를 엽니다.

  2. 스크립트에 다음 함수를 추가합니다:

    ## Function: Retrieve system bit
    system_bit=$(getconf LONG_BIT)

    이 함수는 getconf 명령을 사용하여 시스템에서 사용하는 비트 수를 검색합니다.

  3. 스크립트에 변경 사항을 저장합니다.

✨ 솔루션 확인 및 연습

프로세스 정보 검색

이 단계에서는 getinfo.sh 스크립트에 현재 실행 중인 프로세스 수를 검색하는 함수를 추가합니다.

  1. 텍스트 편집기에서 getinfo.sh 스크립트를 엽니다.

  2. 스크립트에 다음 함수를 추가합니다:

    ## Function: Retrieve the number of currently running processes
    process=$(ps -ef | wc -l)

    이 함수는 ps 명령을 사용하여 실행 중인 모든 프로세스를 나열한 다음, wc 명령을 사용하여 줄 수를 계산합니다.

  3. 스크립트에 변경 사항을 저장합니다.

✨ 솔루션 확인 및 연습

소프트웨어 정보 검색

이 단계에서는 getinfo.sh 스크립트에 설치된 소프트웨어 패키지 수를 검색하는 함수를 추가합니다.

  1. 텍스트 편집기에서 getinfo.sh 스크립트를 엽니다.

  2. 스크립트에 다음 함수를 추가합니다:

    ## Function: Retrieve the number of installed software packages
    software_num=$(dpkg-query -f '${binary:Package}\n' -W | wc -l)

    이 함수는 dpkg-query 명령을 사용하여 설치된 모든 소프트웨어 패키지를 나열한 다음, wc 명령을 사용하여 줄 수를 계산합니다.

  3. 스크립트에 변경 사항을 저장합니다.

✨ 솔루션 확인 및 연습

IP 주소 정보 검색

이 단계에서는 getinfo.sh 스크립트에 eth0 네트워크 인터페이스의 IP 주소를 검색하는 함수를 추가합니다.

  1. 텍스트 편집기에서 getinfo.sh 스크립트를 엽니다.

  2. 스크립트에 다음 함수를 추가합니다:

    ## Function: Retrieve the IP address of eth0
    ip=$(ip addr show eth0 | awk '/inet / {print $2}' | sed 's|/.*||')

    이 함수는 ip 명령을 사용하여 eth0 네트워크 인터페이스의 IP 주소를 검색한 다음, awksed를 사용하여 IP 주소를 추출합니다.

  3. 스크립트에 변경 사항을 저장합니다.

✨ 솔루션 확인 및 연습

시스템 정보 출력

이 마지막 단계에서는 시스템 정보를 표시하기 위해 getinfo.sh 스크립트에 출력 섹션을 추가합니다.

  1. 텍스트 편집기에서 getinfo.sh 스크립트를 엽니다.

  2. 스크립트에 다음 출력 섹션을 추가합니다:

    ## Output information
    echo "cpu num: $cpu_num"
    echo "memory total: $memory_total G"
    echo "memory free: $memory_free M"
    echo "disk size: $disk_size"
    echo "system bit: $system_bit"
    echo "process: $((process - 1))"
    echo "software num: $software_num"
    echo "ip: $ip"

    이 섹션은 echo 명령을 사용하여 시스템 정보를 필요한 형식으로 출력합니다.

  3. 스크립트에 변경 사항을 저장합니다.

축하합니다! 이제 getinfo.sh 스크립트 작성이 완료되었습니다. 터미널에서 다음 명령을 실행하여 스크립트를 실행할 수 있습니다:

sh getinfo.sh

스크립트는 프로젝트 요구 사항에 지정된 대로 시스템 정보를 출력합니다.

## Example
cpu num: 8
memory total: 30 G
memory free: 10867 M
disk size: 20G
system bit: 64
process: 40
software num: 1389
ip: 1.32.X.X
✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.