42Seoul/Born2beroot

monitoring.sh implement

재윤 2023. 5. 9. 20:51
반응형

→ 이 친구는 root 파일에 있어야함. 우리가 처음 루트로 로그인 하면 이 위치에 있을 거임 여기 말고

 

전체 코드

#!/bin/bash
#1
printf "#Architecture: "
uname -a

#2
printf "#CPU physical : "
cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l

#3
printf "#vCPU : "
grep -c processor /proc/cpuinfo

#4
printf "#Memory Usage: "
free --mega | grep Mem | awk '{printf"%d/%dMB (%.2f%%)\\n", $3, $2, $3/$2 * 100 }'

#5
printf "#Disk Usage: "
df -Bm | grep /dev/map | awk '{sum += $3}END{print sum}' | tr -d "\\n"
printf "/"
df -BG | grep /dev/map | awk '{sum += $2}END{print sum}' | tr -d "\\n"
printf "Gb ("
df -Bm | grep /dev/map | awk '{sum1 += $3 ; sum2 += $2 }END{printf "%d%%)\\n", sum1 / sum2 * 100}'

#6
#apt install sysstat
printf "#CPU load: "
mpstat | grep all | awk '{printf "%.2f%%\\n", 100-$13}'

#7
printf "#Last boot: "
who -b | awk '{print $3, $4}'

#8
printf "#LVM use: "
lsblk | grep lvm | wc -l | awk '{if($NF > 0) {print "yes"} else {print "no"}}'

#9
printf "#Connections TCP : "
ss | grep -i tcp | wc -l | awk '{if($NF == 0) {print $NF" ""NONE"} else if ($NF >= 1) {print $NF" ""ESTABLISHED"}}'

#10
printf "#User log: "
who | wc -l

#11
printf "#Netwrok: IP "
hostname -I | tr -d "\\n"
printf "("
ip addr | grep ether | awk '{print $2}' | tr -d "\\n"
printf ")\\n"

#12
printf "#Sudo : "
journalctl _COMM=sudo | wc -l | tr -d "\\n"
printf " cmd\\n"

1.  운영체제와 커널의 버전에 대한 구조

uname -a

첫번째 “uname -a”는 현재 운영체제의 각종 버전들에 대한 모든 정보를 나타낸 것이다.

즉, 현재 운영체제의 배포판명, 컴파일한 gcc컴파일러의 버전, 생성한 날짜, 커널버전, 플랫폼등 다양한 정보를 보여주고 있다.

• Linux(커널 이름) wonljeon42(호스트 명) 5.10.0-19-amd64(커널 릴리즈 번호) #1 SMP Debian 5.10.149-2 (2022-10-21)(커널 버전과 커널이 빌드된 날짜 정보) x86_64(호스트의 프로세서 아키텍쳐 정보) GNU/Linux(시스템 운영체제 이름 정보)

 

참고 블로그

커널버전 및 배포판버전 확인하는 방법 > 강좌 | 클라우드포털

 

커널버전 및 배포판버전 확인하는 방법 > 강좌 | 클라우드포털

커널버전 및 배포판버전 확인하는 방법 리눅스시스템을 운영하다보면 배포판 버전이나 커널버전등을 직접 확인해야 할 필요성이 있다. 물론 이미 리눅스를 설치했던 시스템관리자라면 당연히

www.linux.co.kr

 

2. 물리 프로세서들의 수

과제에서 말하는 프로세서 == 코어라고 생각됨

grep "physical id" /proc/cpuinfo | sort -u | wc -l

우리가 흔히 말하는 프로세서(processor) 또는 CPU(Central Processor Unit)는 제어장치, 연산장치, 레지스터 그리고 데이터 버스로 구성된 디지털 시스템의 핵심 부분으로, 프로그램을 기억 장치로부터 읽어 연산 처리, 비교처리, 데이터 전송, 편집, 변환, 테스트와 분기 등의 데이터를 처리하고, 각종 장치를 구동하는 역할을 담당한다.

 

 

내 컴퓨터 우분투에서 해보기

 

 

참고 블로그

리눅스 CPU 정보 확인하기(CPU 정보, 코어수 등등) - 달소씨의 하루

 

리눅스 CPU 정보 확인하기(CPU 정보, 코어수 등등) - 달소씨의 하루

리눅스운영체제(Ubuntu, Cent OS) CPU 정보 확인하기 cat /proc/cpuinfo CPU 전체 코어 확인 grep -c processor /proc/cpuinfo 물리코어 개수 확인 grep "physical id" /proc/cpuinfo | sort -u | wc -l cpu당 물리코어 확인 grep "cpu cor

blog.dalso.org

 

 

3. 가상 프로세서들의 수

#3
printf "#vCPU : "
grep -c processor /proc/cpuinfo
  • -c
    • grep 한 것 중에 줄을 출력해달라는 것

 

내 컴퓨터 우분투에서 해보기

 

위에처럼 8개가 있는 것임. 그래서 위에 리눅스에서 1개가 나오는 것임

 

참고 블로그

[Linux] CPU 개수 확인하기

 

[Linux] CPU 개수 확인하기

일반적인 경우, 하이퍼스레딩에 의해 OS(윈도우, 리눅스 등)에서 코어 수가 실제 코어 수의 2배로 인식됨.예를 들어 싱글코어는 코어 2개로, 듀얼코어는 4개로 인식CPU 코어 전체 개수# grep -c processo

brownbears.tistory.com

 

 

4. 현재 서버에서 사용가능한 RAM과 백분율로 표현된 사용률

Ram 최대 용량과 사용량을 구하고 백분율로 구하기

free 명령어를 사용하면 쉽게 메모리 사용량과 여유량 그리고 캐싱으로 사용되는 메모리가 얼마나 있는지 파악할 수 있습니다. 실제 free 명령어는 리눅스 /proc/meminfo에서 메모리 정보를 가져와 보여줍니다. 그럼 free 명령어로 볼 수 있는 메모리 정보와 이와 관련된 meminfo의 값들을 알아보겠습니다.

 

#free | grep Mem
free --mega | grep Mem | awk '{printf"%d/%dMB (%.2f%%)\\n", $3, $2, $3/$2 * 100}' 

free 명령어

-m은 메비바이트로 변환됨 그래서 과제에서 원하는 —mega로 해야함

근데

단위를 변환하면 양이 다르게 나옴 왜이러는지는 모르겠음,,

 

 

 

참고 블로그

리눅스 free 명령어로 메모리 상태 확인하기 | 와탭 블로그

 

리눅스 free 명령어로 메모리 상태 확인하기 | 와탭 블로그

free 명령어 결과의 각 컬럼에 대해 자세히 알아보고 meminfo를 참조하여 메모리 현황을 파악해 봅시다.

www.whatap.io

 

5. 현재 서버에서 사용가능한 memory와 백분율로 표현된 사용률

  1. 사용 공간
df -Bm | grep /dev/map | awk '{sum += $3}END{print sum}' | tr -d "\\n"
  • -B
    • 출력할 때 단위 붙여줌
  • -m
    • 보기 쉽게 메가바이트 단위로 바꿔줌
  1. 전체 공간
df -BG | grep /dev/map | awk '{sum += $2}END{print sum}' | tr -d "\\n"
  • -B
    • 출력할 때 단위 붙여줌
  • -G
    • 보기 쉽게 기가바이트 단위로 바꿔줌
  1. 백분율
df -Bm | grep /dev/map | awk '{sum1 += $3 ; sum2 += $2 }END{printf "%d%%)\\n", sum1 / sum2 * 100}'

전체

#5
printf "#Disk Usage: "
df -Bm | grep /dev/map | awk '{sum += $3}END{print sum}' | tr -d "\\n"
printf "/"
df -BG | grep /dev/map | awk '{sum += $2}END{print sum}' | tr -d "\\n"
printf "Gb ("
df -Bm | grep /dev/map | awk '{sum1 += $3 ; sum2 += $2 }END{printf "%d%%)\\n", sum1 / sum2 * 100}'

 

h 명령어 사람이 보기 좋게 만들어줌

6. 백분율로 표현된 프로세서들의 현재 사용률 (apt 권한)

apt 해결

 

  1. 루트인 관리자 계정으로 넘아간다.
su
  1. apt 업데이트
apt-get update -y
  1. sysstat 다운
apt install sysstat

mpstat 사용하기 위해서는 sysstat 필요

 

 

밑에 사진 처럼 오류 나면

데비안에서 sudo하면 찾을 수가 없다함

왜 그럴까?

→ 데비안 측에서 부작용 때문에(보안 문제) 기본 설치시 sudo 패키지를 넣지 않았기 때문

 

mpstat

CPU 사용량 확인

  • mpstat
    • CPU 상태를 시간별로 확인할 수 있는 명령어
  • tail -l
    • 출력한 것 중에 제일 마지막 부분을 말함
  • 100-$13 : $13은 유휴(컴퓨터 처리 장치에서 유휴 또는 아이들은 어떠한 프로그램에 의해서도 사용되지 않는 상태)인 cpu를 나타내며 우리는 cpu 사용률을 보여줘야 하므로 전체 100에서 유휴 상태 cpu를 빼준 결과를 출력하면 된다.
mpstat | grep all | awk '{printf "%.2f%%\\n", 100-$13}'

 

참고 블로그

우분투 /var/lib/dpkg/lock-frontend 잠금 파일을 얻을 수 없습니다. 해결 방법 feat.apt-get

 

우분투 /var/lib/dpkg/lock-frontend 잠금 파일을 얻을 수 없습니다. 해결 방법 feat.apt-get

우분투 /var/lib/dpkg/lock-frontend 잠금 파일을 얻을 수 없습니다. 해결 방법 feat.apt-get 안녕하세요. 얼마전에 우분투를 집에 있는 서버대용으로 사용하려고 설치 했습니다. 설치 마치고, 재부팅 하고

stricky.tistory.com

 

데비안 오류

 

데비안 오류

진~~~~짜 오랜만에 버추얼박스에 리눅스 데비안 8.6.0 제시(jessie)를 설치했습니다. 운영체제를 새로 설치...

blog.naver.com

🐧 리눅스 CPU / 메모리 / 디스크 / 네트워크 정보 명령어

 

🐧 리눅스 CPU / 메모리 / 디스크 / 네트워크 정보 명령어

CPU 정보 확인 현재 시스템의 cpu정보는 /proc/cpuinfo 파일 안에 상세히 적혀져 있다. 다만 core 당 정보를 한페이지씩 출력하기 때문에, 코어가 많아질수록 페이지가 길어죠 more 옵션을 통해 확인하는

inpa.tistory.com

 

 

7. 마지막으로 재시작된 날짜와 시간

재시작된 날짜와 시간을 보기 위해 2가지가 있다.

  1. last reboot
    1. 이 친구는 다 보여줌
  2. who
    1. 이 친구는 마지막 재시작된 것만 보여줌 또한 날짜를 바로 나타내줄 수 있어서 이걸 선택함.
    2. who -b
      1. who는 호스트에 로그인한 사용자의 정보를 출력한다. -b 옵션은 마지막 시스템 부팅 시간을 출력해준다. 해당 정보에서 날짜와 시간만 awk 필드 구분자로 빼와준다.

who -b| awk '{print $3, $4}'

 

참고 블로그

리눅스 서버 재부팅/재기동 시간 확인하기

 

리눅스 서버 재부팅/재기동 시간 확인하기

안녕하세요, 케이치입니다. 오늘은 리눅스 서버의 재부팅/재기동 또는 언제 shutdown이 됐었는지를 확인하는 방법을 배웠습니다. 그다지 많이 쓸 일은 없는 명령어이긴 한데 웹사이트에 접속이 안

keichee.tistory.com

 

 

8. LVM의 활성화 여부

  • lsblk
    • 현재 디스크 상태를 보여줌
  • NF
    • 행의 개수(가로임)
lsblk | grep lvm | wc -l | awk '{if($NF > 0) {print "yes"} else {print "no"}}'}

 

9. 활성화된 연결들의 개수

이게 뭘 활성화된 연결을 말하는지 궁금할 것이다.

이것이 무엇이냐?

→ 문제에서 #Connections TCP : 1 ESTABLISHED 가 나옴

  • TCP : 서버와 클라이언트 간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜임. 즉 네트워크 소켓이 몇 개인지 찾으면 됨
#9
ss | grep -i tcp | wc -l | wak '{if($NF == 0) {print $NF" ""NONE"} else if ($NF >= 1) {print $NF" ""ESTABLISHED"}}'
 

linux socket 상태를 조회하는 ss(socket statistics) 명령어 사용법

 

www.lesstif.com

linux socket 상태를 조회하는 ss(socket statistics) 명령어 사용법

 

linux socket 상태를 조회하는 ss(socket statistics) 명령어 사용법

 

www.lesstif.com

 

 

10. 서버를 사용하고 있는 유저의 수 

  1. who
    1. 이 친구는 마지막 재시작된 것만 보여줌 또한 날짜를 바로 나타내줄 수 있어서 이걸 선택함.
who | wc -l

 

11. 서버의 IPv4 주소와 MAC 주소

  • lPv4주소란
    • IP주소란 인터넷 상에서 통신하기 위해 각각의 컴퓨터 및 통신장비에 부여하는 고유한 주소를 의미합니다.
  1. IPv4 주소 확인
hostname -I

  2. MAC 주소 확인

ip addr | grep ether | awk '{print $2}'
  • ip addr == ifconfig 네트워크 인터페이스 ip가 출력됨

참고 블로그

Linux - MAC Address 확인 방법

 

Linux - MAC Address 확인 방법

Linux에서 MAC Address 확인하는 방법을 소개합니다. `ifconfig`는 네트워크 인터페이스의 설정을 보여줍니다. `wlp1s0` 인터페이스의 ether가 MAC 주소입니다. `ip addr` 명령어는 `ifconfig` 명령어와 같이 네트

codechacha.com

 

12. sudo 프로그램으로 실행된 명령의 수

journalctl : 리눅스 로그 확인, _COMM : 특정 로그 보기

#12
printf "#Sudo : "
journalctl _COMM=sudo | wc -l | tr -d "\\n"
printf " cmd\\n"
반응형

'42Seoul > Born2beroot' 카테고리의 다른 글

Bonus implement  (0) 2023.05.09
cron implement  (0) 2023.05.09
Port Forwading implement  (0) 2023.05.09
password.defs implement  (1) 2023.05.09
dhclient 없애기, ip 설정 implement  (0) 2023.05.09