Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. #!/bin/bash
  2. hertz=$(getconf CLK_TCK)
  3. PIDS=$(ls -la /proc | awk '{print $9}' | grep "^[0-9]*$")
  4. PIDLIST=$(echo $PIDS | tr "" "n")
  5. counter=0
  6. declare -A USER
  7. declare -A PRIORITY
  8. declare -A VIRTUALMEMORY
  9. declare -A CPUUSAGE
  10. declare -A MEMORY
  11. declare -A NAME
  12. declare -A TIME
  13.  
  14. printf "%-10s %-10s %-10s %-10s %-10s %-10s %-10s %-11s %-10sn" PID USUARIO PR VIRT S %CPU %MEM TIME COMMAND
  15.  
  16. for PID in $PIDLIST; do
  17. if [ -d /proc/$PID ]; then
  18. #--CALCULATE USER--#
  19. useruid=$(awk '/Uid/ {print $2}' 2> /dev/null < /proc/$PID/status)
  20. user=$(getent passwd $useruid | cut -d: -f1)
  21. #--CALCULATE PRIORITY--#
  22. PRIORITY[$counter]=$(awk '{print $18}' 2> /dev/null < /proc/$PID/stat)
  23. #--CALCULATE VIRTUAL MEMORY--#
  24. VIRTUALMEMORY[$counter]=$(awk '{print $23}' 2> /dev/null < /proc/$PID/stat)
  25. #--CALCULATE STATE--#
  26. STATE[$counter]=$(awk '{print $3}' 2> /dev/null < /proc/$PID/stat)
  27. #--CALCULATE CPU TIME--#
  28. #-- user_util = 100 * (utime_after - utime_before) / (time_total_after - time_total_before); --#
  29. uptime=$(awk '{print $1}' < /proc/uptime)
  30. utime=$(awk '{print $14}' < /proc/$PID/stat)
  31. stime=$(awk '{print $15}' < /proc/$PID/stat)
  32. cutime=$(awk '{print $17}' < /proc/$PID/stat)
  33. cstime=$(awk '{print $16}' < /proc/$PID/stat)
  34. starttime=$(awk '{print $22}' < /proc/$PID/stat)
  35. totaltime=$(($utime+$stime+$cutime+$cstime))
  36. middlevalue=$((starttime / hertz))
  37. seconds=$(echo "scale = 2; $uptime-$middlevalue" | bc)
  38. middlevalue=$(echo "scale = 2;$totaltime/$hertz" | bc)
  39. middlevalue=$(echo "scale = 3;$middlevalue/$seconds" | bc)
  40. CPUUSAGE[$counter]=$(echo "scale = 2; $middlevalue*100" | bc | awk '{printf "%.2f", $0}')
  41. #--CALCULATE %MEMORY--#
  42. MEMORY[$counter]=$(echo 0 $(awk '/Pss/ {print "+", $2}' 2> /dev/null < /proc/$PID/smaps) | bc)
  43. #--CALCULATE TIME--#
  44. TIME[$counter]=$(date -d@$seconds -u +%H:%M:%S)
  45. #--CALCULATE NAME--#
  46. NAME[$counter]=$(awk '{print $1}' 2> /dev/null < /proc/$PID/cmdline)
  47. counter=$((counter + 1))
  48. printf "%-10s %-10s %-10s %-10s %-10s %-10s %-10s %-11s %-10sn" $PID $user "$PRIORITY[-1]" "$VIRTUALMEMORY[-1]" "$STATE[$-1]" "$CPUUSAGE[-1]" "$MEMORY[-1]" "$TIME[-1]" "$NAME[-1]"
  49. fi
  50.  
  51. done
  52.  
  53. PID USUARIO PR VIRT S %CPU %MEM TIME COMMAND
  54. 1 root 20[-1] 3756032[-1] S[hB1] 0.10[-1] 0[-1] 21:22:27[-1] /sbin/init[-1]
  55. 10 root 20[-1] 3756032[-1] S[hB1] 0.10[-1] 0[-1] 21:22:27[-1] /sbin/init[-1]
  56. 11 root 20[-1] 3756032[-1] S[hB1] 0.10[-1] 0[-1] 21:22:27[-1] /sbin/init[-1]
  57. 1140 root 20[-1] 3756032[-1] S[hB1] 0.10[-1] 0[-1] 21:22:27[-1] /sbin/init[-1]
  58. 1145 root 20[-1] 3756032[-1] S[hB1] 0.10[-1] 0[-1] 21:22:27[-1] /sbin/init[-1]
  59. 1167 root 20[-1] 3756032[-1] S[hB1] 0.10[-1] 0[-1] 21:22:27[-1] /sbin/init[-1]
  60. 12 root 20[-1] 3756032[-1] S[hB1] 0.10[-1] 0[-1] 21:22:27[-1] /sbin/init[-1]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement