소개
이 프로젝트에서는 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 스크립트를 생성합니다.
텍스트 편집기를 열고
/home/labex/project디렉토리에getinfo.sh라는 새 파일을 생성합니다.파일 시작 부분에 다음 shebang 라인을 추가합니다:
#!/bin/zsh이 라인은 스크립트가 zsh 셸을 사용하여 실행되어야 함을 지정합니다.
스크립트에 다음 주석을 추가합니다:
## getinfo.sh - Linux System Information Script ## This script retrieves CPU, memory, disk, and other information of a Linux server.이 주석은 스크립트의 목적에 대한 간략한 설명을 제공합니다.
파일을 저장합니다.
CPU 정보 검색
이 단계에서는 getinfo.sh 스크립트에 CPU 개수를 검색하는 함수를 추가합니다.
텍스트 편집기에서
getinfo.sh스크립트를 엽니다.스크립트에 다음 함수를 추가합니다:
## Function: Retrieve CPU information cpu_num=$(grep -c '^processor' /proc/cpuinfo)이 함수는
grep명령을 사용하여/proc/cpuinfo파일에서 processor 항목의 수를 계산합니다. 이는 CPU 의 개수를 나타냅니다.스크립트에 변경 사항을 저장합니다.
메모리 정보 검색
이 단계에서는 getinfo.sh 스크립트에 총 메모리 크기와 사용 가능한 메모리 크기를 검색하는 함수를 추가합니다.
텍스트 편집기에서
getinfo.sh스크립트를 엽니다.스크립트에 다음 함수를 추가합니다:
## 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) 단위로 검색합니다.스크립트에 변경 사항을 저장합니다.
디스크 정보 검색
이 단계에서는 getinfo.sh 스크립트에 루트 디렉토리에 마운트된 파일 시스템의 총 크기를 검색하는 함수를 추가합니다.
텍스트 편집기에서
getinfo.sh스크립트를 엽니다.스크립트에 다음 함수를 추가합니다:
## Function: Retrieve total disk size of the root filesystem (in GB) disk_size=$(df -h / | awk '/\// {print $2}')이 함수는
-h옵션과 함께df명령을 사용하여 루트 디렉토리 (/) 에 마운트된 파일 시스템의 총 크기를 검색한 다음,awk를 사용하여 크기 값을 추출합니다.스크립트에 변경 사항을 저장합니다.
시스템 비트 정보 검색
이 단계에서는 getinfo.sh 스크립트에 시스템 비트 정보를 검색하는 함수를 추가합니다.
텍스트 편집기에서
getinfo.sh스크립트를 엽니다.스크립트에 다음 함수를 추가합니다:
## Function: Retrieve system bit system_bit=$(getconf LONG_BIT)이 함수는
getconf명령을 사용하여 시스템에서 사용하는 비트 수를 검색합니다.스크립트에 변경 사항을 저장합니다.
프로세스 정보 검색
이 단계에서는 getinfo.sh 스크립트에 현재 실행 중인 프로세스 수를 검색하는 함수를 추가합니다.
텍스트 편집기에서
getinfo.sh스크립트를 엽니다.스크립트에 다음 함수를 추가합니다:
## Function: Retrieve the number of currently running processes process=$(ps -ef | wc -l)이 함수는
ps명령을 사용하여 실행 중인 모든 프로세스를 나열한 다음,wc명령을 사용하여 줄 수를 계산합니다.스크립트에 변경 사항을 저장합니다.
소프트웨어 정보 검색
이 단계에서는 getinfo.sh 스크립트에 설치된 소프트웨어 패키지 수를 검색하는 함수를 추가합니다.
텍스트 편집기에서
getinfo.sh스크립트를 엽니다.스크립트에 다음 함수를 추가합니다:
## Function: Retrieve the number of installed software packages software_num=$(dpkg-query -f '${binary:Package}\n' -W | wc -l)이 함수는
dpkg-query명령을 사용하여 설치된 모든 소프트웨어 패키지를 나열한 다음,wc명령을 사용하여 줄 수를 계산합니다.스크립트에 변경 사항을 저장합니다.
IP 주소 정보 검색
이 단계에서는 getinfo.sh 스크립트에 eth0 네트워크 인터페이스의 IP 주소를 검색하는 함수를 추가합니다.
텍스트 편집기에서
getinfo.sh스크립트를 엽니다.스크립트에 다음 함수를 추가합니다:
## Function: Retrieve the IP address of eth0 ip=$(ip addr show eth0 | awk '/inet / {print $2}' | sed 's|/.*||')이 함수는
ip명령을 사용하여 eth0 네트워크 인터페이스의 IP 주소를 검색한 다음,awk및sed를 사용하여 IP 주소를 추출합니다.스크립트에 변경 사항을 저장합니다.
시스템 정보 출력
이 마지막 단계에서는 시스템 정보를 표시하기 위해 getinfo.sh 스크립트에 출력 섹션을 추가합니다.
텍스트 편집기에서
getinfo.sh스크립트를 엽니다.스크립트에 다음 출력 섹션을 추가합니다:
## 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명령을 사용하여 시스템 정보를 필요한 형식으로 출력합니다.스크립트에 변경 사항을 저장합니다.
축하합니다! 이제 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 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



