[42-Seoul/B2br] Script monitoring

yebeen·2022년 6월 29일
0

42-Seoul/Born2beroot

목록 보기
6/7
post-thumbnail

1. cron

1.1 cron 이란?

특정한 시간에 또는 특정 시간 마다 어떤 작업을 자동으로 수행하게 해주고 싶을 때 사용하는 명령어이다. cron 시스템에는 시스템에서 기본적으로 사용하는 시스템크론이 있고 root나 일반 사용자가 자신의 cron을 직접 설정하는 사용자 크론이 있따.

1.2 사용하는 이유

주기적으로 반복되는 일을 자동으로 실행할 수 있도록 예약할 뿐만아니라 보안 취약점 검사를 수행시킬 수도 있다.

분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)

  • 5시, 8시에 매 10분마다 script.sh를 실행
    */10 5,8 * * /script.sh
  • 크론탭 리스트 확인
$ sudo crontab -l
  • 크론탭 수정
$ sudo crontab -e
  • 크론 재실행
$ service cron restart
  • 크론 실행
service cron start
  • 크론 정지
service cron stop

Monitoring

#!/bin/bash
ARC=$(uname -a)
PCPU=$(nproc --all)
VCPU=$(grep "^processor" /proc/cpuinfo | wc -l)
FRAM=$(free -m | awk '$1 == "Mem:" {print $2}')
URAM=$(free -m | awk '$1 == "Mem:" {print $3}')
PRAM=$(free | awk '$1 == "Mem:" {printf("%.2f"), $3/$2*100}')
FDISK=$(df -Bg | grep '^/dev/' | grep -v '/boot$' | awk '{ft += $2} END {print ft}')
UDISK=$(df -Bm | grep '^/dev/' | grep -v '/boot$' | awk '{ut += $3} END {print ut}')
PDISK=$(df -Bm | grep '^/dev/' | grep -v '/boot$' | awk '{ut += $3} {ft+= $2} END {printf("%d"), ut/ft*100}')
CPUL=$(top -bn1 | grep '^%Cpu' | cut -c 9- | xargs | awk '{printf("%.1f%%"), $1 + $3}')
LB=$(who -b | awk '$1 == "system" {print $3 " " $4}')
LVMT=$(lsblk | grep "lvm" | wc -l)
LVMU=$(if [ $LVMT -eq 0 ]; then echo no; else echo yes; fi)
CTCP=$(cat /proc/net/sockstat{,6} | awk '$1 == "TCP:" {print $3}')
ULOG=$(users | wc -w)
IP=$(hostname -I)
MAC=$(ip link show | awk '$1 == "link/ether" {print $2}')
CMDS=$(journalctl _COMM=sudo | grep COMMAND | wc -l)
wall "#Architecture: $ARC
	  #CPU physical: $PCPU
	  #vCPU: $VCPU
	  #Memory Usage: $URAM/${FRAM}MB ($PRAM%)
	  #Disk Usage: $UDISK/${FDISK}Gb ($PDISK%)
	  #CPU load: $CPUL
	  #Last boot: $LB
	  #LVM use: $LVMU
	  #Connexions TCP: $CTCP ESTABLISHED
	  #User log: $ULOG
	  #Network: IP $IP ($MAC)
	  #Sudo: $CMDS cmd"
  • username : 시스템 정보 출력 명령어로 -a옵션으로 커널 이름. 네트워크 호스트명, 커널 릴리즈 정보, 커널 버전, 시스템의 하드웨어 타입(아키텍쳐), 운영체제 이름 정보를 확인할 수 있다.
  • nproc : 설치된 모든 코어/프로세스 수를 출력한다. /proc/cpuinfo에는 CPU 정보가 담겨있다. grep processor로 프로세스만 찾아 개수를 출력한다.
  • free : 시스템 메모리 사용 현황을 확인할 수 있고 -m옵션으로 메가바이트 단위로 표시가 가능하다.
  • df : 파일 시스템 디스크 공간의 사용량을 출력하는 명령어이다.
  • top : 시스템의 상태를 전반적으로 가장 빠르게 파악 가능하다.
    - -b : 순간의 정보를 확인할 수 있다 (batch 모드)
    • -n : top 실행 주기를 설정한다.
    • 1 : CPU Core별로 사용량을 보여준다.
  • link : 네트워크 인터에피으슬 표시하고 수정한다. show옵션으로 관련 인터페이스를 출력한다.
  • journalctl : 리눅스 로그 확인 _COMM으로 특정 로그를 확인할 수 있다.
profile
🐣🐥

0개의 댓글