달력

22025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
 

#!/usr/bin/ksh

trap 'echo " deleting tmp file " ; rm -f "/tmp/item" "$logdir/mon/tmp_file" "$logdir/mon/proc_list" ' EXIT

 

# define log file name

logdir="./mon"

 

#delete proc list

rm -rf "$logdir/mon"

mkdir -p "$logdir"

mkdir -p "$logdir/mon"

 

 

# generate process list

 

case `uname -s` in

AIX)

ps -e -o "user,pcpu,vsz,comm" | grep -v "<" | grep -v "ps" | grep -v "USER" | grep -v "grep" > "$logdir/mon/proc_list"

;;

Linux)

ps -e -p "user,pcpu,vsz,comm" | grep -v "<" | grep -v "ps" | grep -v "USER" | grep -v "grep" > "$logdir/mon/proc_list"

;;

HP-UX)

ps -e -o "user,pcpu,vsz,comm" | grep -v "<" | grep -v "ps" | grep -v "USER" | grep -v "grep" > "$logdir/mon/proc_list"

;;

SunOS)

ps -e -o "user,pcpu,vsz,comm" | grep -v "<" | grep -v "ps" | grep -v "USER" | grep -v "grep" > "$logdir/mon/proc_list"

;;

esac

 

 

case "$1" in

-user)

mon_file="$logdir/`hostname`_user_status_`date +%y%m%d`.log"

awk '{print $1}' "$logdir/mon/proc_list" | sort | uniq | while read line

 do

 echo "$line" > "/tmp/item"

 grep "$line" "$logdir/mon/proc_list" | awk 'BEGIN{cpu=0;mem=0;cpu_sum=0;mem_sum=0;getline d < "/tmp/item"}

 {

  cpu=$2;

  mem=$3;

  cpu_sum=cpu_sum+cpu;

  mem_sum=mem_sum+mem;

 }

 END{

  printf("%s %2.1f %2.1f\n",d,cpu_sum,mem_sum);

 }' >> "$logdir/mon/tmp_file"

 done

;;

 

-proc)

mon_file="$logdir/`hostname`_ps_status_`date +%y%m%d`.log"

awk '{print $4}' "$logdir/mon/proc_list" | sort | uniq | while read line

 do

 echo "$line" > "/tmp/item"

 grep "$line" "$logdir/mon/proc_list" | awk 'BEGIN{cpu=0;mem=0;cpu_sum=0;mem_sum=0;getline d < "/tmp/item"}

 {

  cpu=$2;

  mem=$3;

  cpu_sum=cpu_sum+cpu;

  mem_sum=mem_sum+mem;

 }

 END{

  printf("%s %2.1f %2.1f\n", d,cpu_sum,mem_sum);

 }' >> "$logdir/mon/tmp_file"

 done

;;

 

*)

echo "please enter the right option [-user:-proc]"

exit 0

;;

esac

 

# print log file

sort -rnk 2 "$logdir/mon/tmp_file"|awk 'BEGIN{"date +%H%M%S"| getline d}{if (length($1)!=100) print d" "$0}' >> "$mon_file"

echo "" >> "$mon_file"


Posted by 짜꾸미의골골몽
|