[Born2beroot] 6. 시스템 정보 출력 - cron tab

Yejin Kim·2022년 5월 14일
0

42 cursus

목록 보기
6/20

시스템 정보 출력 확인 명령어

🖥 monitoring.sh

📍 운영체제의 아키텍쳐와 커널 버전

  • uname
    시스템 정보를 출력하는 명령어

    다양한 옵션을 통해 원하는 정보만 추출 가능
    서브젝트 예시에서는 모든 정보를 출력하고 있기 때문에
    -a(all) 옵션을 사용

📍 프로세서 개수

  • cat /proc/cpuinfo
    /proc/cpuinfo 파일은 CPU 코어의 세부사항에 대한 정보를 가지고 있음

  • 물리 프로세서
    cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l
    physical id가 적힌 line을 추출하여 unique하게 정렬하고 line 개수를 count 하여 개수를 알아낸다.

    physical id : N 에서 N은 개수가 아닌 말 그대로 id를 의미 !
    실제로 cpu 개수가 여러 개인 경우
    physical id : 0
    physical id : 1
    ...
    위와 같이 나오기 때문에 line의 개수로 물리 프로세서의 개수를 셀 수 있다.

  • 가상 프로세서
    cat /proc/cpuinfo | grep "processor" | sort -u | wc -l

    실제 cpu의 개수가 아닌 프로세서의 개수를 셈으로써 가상 프로세서의 개수를 알 수 있다.
    processor의 개수는 물리적 CPU 개수와, 각 CPU 당 코어의 개수 그리고 sibling, 즉 HT(HyperThread)까지 반영되었을 때 최종 프로세서의 개수를 나타낸다.


📍 사용가능한 RAM 및 사용률

RAM : Random Access Memory
컴퓨터의 단기 기억 장치

  • free
    리눅스 시스템에서 메모리의 전체적인 현황을 살펴볼 수 있는 명령어
  • -m
    MB 단위로 출력하는 옵션
  • awk
    데이터를 조작하고 리포트를 생성하기 위해 사용하는 언어
    free -m | grep Mem | awk '{printf "%d/%dMB (%.2f%%)", $3, $2, $3/$2*100}'

📍 사용가능한 메모리 및 사용률

  • df
    리눅스 내 디스크메모리 전체 현황 확인 가능
  • -BM
    MB 기준 출력 설정 옵션
  • -BG
    GB 기준 출력 설정 옵션

서브젝트 파일 예시 처럼 디스크 사이즈를 추출한 뒤
전체 size는 GB 기준, 현 사용량은 MB로 합산하여 사용률 계산

  • total size
    df -BG | grep LVM | awk '{sum += $3} END {print sum}'
  • used
    df -BM | grep LVM | awk '{sum += $2} END {print sum}'
  • used/total
    위에서 각각 구한 것과 마찬가지로 각 필드의 값을 더하고 적절히 나눠 출력

📍 프로세서들의 사용률

  • sudo apt-get install sysstat
    mpstat 명령어를 사용하기 위해 sysstat을 다운 받는다.

    sysstat은 리눅스에서 disk I/O, CPU, memory, networking 등의 자원에 대한 모니터링을 할 수 있게 도와주는 유틸리티

  • mpstat
    mpstat에는 다양한 정보가 저장되어 있는데 %idle은 cpu 사용시간의 잉여량을 나타냄
    따라서 해당 백분위를 100에서 빼면 사용량을 알 수 있다.
    mpstat | tail -1 | awk '{print 100-$NF}'


📍 마지막 부팅 시간과 날짜

  • last reboot
    재기동한 시간이 언제인지 내림차순 정렬하여 출력
  • who
    호스트에 로그인한 사용자의 정보를 출력
    • -b
      who 명령어에 b 옵션을 사용하면 마지막 시스템 부팅 시간을 출력
      awk로 서브젝트 예시와 같이 편집하여 출력한다.

위의 두 명령어 중 출력 예시에 더 가까운 who를 사용하여 과제 진행


📍 LVM 활성화 여부

  • lsblk
    현재 장착된 디스크의 주요 사양 확인 가능

    lsblk 명령어를 했을 때 LVM 파티셔닝이 되어 있으면 LVM이 활성화 되어 있다고 할 수 있음
    → LVM으로 추출했을 때 line이 1개 이상 존재하면 활성화 yes
    lsblk | grep LVM | wc -l | awk '{if($1>0) print "yes"; else print "no"}'

📍 활성화된 연결의 수

  • ss 명령어로 네트워크 상태 확인
    ss -t 명령어를 통해 tcp network의 정보를 확인할 수 있다.
    아직은 ssh 연결을 하지 않아 별도로 목록이 뜨지는 않음.
    ss -t | grep ESTAB | wc -l
    tcp network 정보 중에서 ESTAB(establish) 상태인 network의 개수를 카운트 함

📍 서버를 사용하고 있는 유저 수

  • who
    호스트에 로그인한 사용자의 정보를 출력하므로
    이 명령어로 출력되는 사용자 정보의 line 수를 count
    who | wc -l

📍 서버의 IPv4 주소, MAC 주소

  • hostname -I
    서버의 IPv4 주소를 얻을 수 있음
  • ip link
    mac 주소 얻을 수 있음

    여기서 link/ether 부분에 MAC address가 나와 있다.
    이를 편집하여 MAC address를 출력
    ip link | grep link/ether | awk '{print "("$2")"}'

📍 Sudo로 실행된 커맨드 수

  • cat /var/log/auth.log
    auth.log 파일에는 사용자 로그인이나 사용된 인증 방법같은 시스템 인증 정보 로그가 저장되어 있다.

    이 파일에서 sudo 명령어만 추출하여 line 개수를 센다
    cat /var/log/auth.log | grep sudo | grep COMMAND | wc -l | tr -d '\n'

⏳ cron

💡 cron 이란?

cron은 unix 운영체제에서 어떤 작업을 특정 시간에 실행시키기 위한 데몬

데몬?
멀티태스킹 운영 체제에서 데몬은 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램

crontab

cron 작업을 설정하는 파일
cron process는 /etc/crontab 파일에 설정된 대로 작업을 수행하게 된다


참고 사이트

profile
The World Is My Oyster 🌏

0개의 댓글