1 2 3 4 5 6 L

Page Header > Subtitle

shell script 일정 이상 cpu 점유시 강제 kill

#!/usr/bin/env bash
 
MAX_CPU=90
MAX_OVER_COUNT=3
MAX_SEC=20
SLEP_TIME=5
 
CPU_OVER_COUNT=0
 
while [ : ]; do
  STRING=$(ps -eo pid,pcpu,time,command | grep node | sort -k 2 -r | head -n 1)
  PID=$(echo $STRING | awk '{print $1}')
  CPU=$(echo $STRING | awk '{print $2}')
  TIME_STR=$(echo $STRING | awk '{print $3}')
  #echo "STRING = $STRING"
  echo "PID = $PID"
  echo "CPU = $CPU"
  echo "TIME = $TIME_STR"
  CPU=${CPU%%.*}
 
  # Decode the CPU time format [dd-]hh:mm:ss.
  TIME_SEC=0
  IFS="-:" read c1 c2 c3 c4 <<< "$TIME_STR"
 
  #with top command time format is hh:mm.ss, so truncare seconds in c2
  c2=${c2%%.*}
 
  if [ -n "$c4" ]
  then
    TIME_SEC=$((10#$c4+60*(10#$c3+60*(10#$c2+24*10#$c1))))
  elif [ -n "$c3" ]
  then
    TIME_SEC=$((10#$c3+60*(10#$c2+60*10#$c1)))
  else
    TIME_SEC=$((10#0+(10#$c2+60*10#$c1)))
  fi
 
 
  if [ ! -z $CPU ]; then
    if [ $CPU -gt $MAX_CPU ] && [ $TIME_SEC -gt $MAX_SEC ]; then
      echo "CPU Over"
      CPU_OVER_COUNT=$(($CPU_OVER_COUNT+1))
      if [ $CPU_OVER_COUNT -ge $MAX_OVER_COUNT ]; then
        echo "kill -15 $PID"
        kill -15 $PID
        sleep 3
        echo "kill -9 $PID"
        kill -9 $PID
        echo "kill zombies"
        kill -HUP $(ps -A -ostat,ppid | grep -e '[zZ]'| awk '{ print $2 }')
        CPU_OVER_COUNT=0
      fi
    else
      CPU_OVER_COUNT=0
    fi
  else
    CPU_OVER_COUNT=0
  fi
  echo "over count $CPU_OVER_COUNT"
  sleep $SLEP_TIME
done
 

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

Server

번호 제목 글쓴이 날짜 조회수
67 Simple CORS using .htaccess file. 미도어묵 03-08 689
66 HTTPS/DNS 차단 이해하기 미도어묵 02-14 738
65 HTTP proxying cloudflare custom port 미도어묵 01-02 715
64 Nginx HTTPS Let's Encrypt 무료 인증서 설치하기 우분투 16.04 미도어묵 10-17 356
63 리눅스 sftp log 남기기 미도어묵 01-25 454
62 PHP | [CentOS 7] PHP 5.4 to PHP 7.1 업그레이드 미도어묵 01-22 618
61 우분투(ubuntu) kernel 업그레이드 시 boot 용량 부족, 의존성 문제 미도어묵 01-11 524
60 firewall.sh , reboot.sh 미도어묵 01-10 337
59 사용자 계정 추가, mysql 계정추가등 shell script 미도어묵 01-10 342
58 Ubuntu 한 서버에서 PHP, JSP 동시에 사용하기 미도어묵 01-08 352
57 Ubuntu JSP서버세팅 미도어묵 01-08 341
56 pid 값으로 강제 종료 스크립트. 미도어묵 12-22 335
55 mysql(mariadb) 테이블별 mysqldump 백업 - shell script 미도어묵 12-22 350
54 Cloudflare - Get visitors real IP without extension(cloudflare_realip.conf) 미도어묵 12-18 334
53 shell script 일정 이상 cpu 점유시 강제 kill 미도어묵 12-07 351
52 리눅스 모니터링 툴 htop 미도어묵 11-09 386
51 [OS X, Ubuntu] 터미널에서 tmux 사용해 보기 미도어묵 11-09 410
50 우분투 보안 업데이트만 설치하기 미도어묵 11-07 365
49 nginx config , rewrite, allow, deny(web && node) 미도어묵 11-01 337
48 특정 IP만 SSH 접속 허용하기 미도어묵 09-30 383