Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.21 KB | None | 0 0
  1. #!/bin/bash
  2. # Используя информацию из /proc/<PID>/stack, посчитать глубину
  3. # стека вызовов для каждого процесса и вывести список процессов
  4. # сгруппированный по глубине
  5. # stack level : 4
  6. # 1433
  7. # 3422
  8. # stack level : 6
  9. # 544
  10. # 12433
  11.  
  12. USAGE="Usage: $0
  13. Задание: Используя информацию из /proc/<PID>/stack, посчитать глубину
  14. стека вызовов для каждого процесса и вывести список процессов
  15. сгруппированный по глубине"
  16.  
  17. function save_stack {
  18.     DIR="$1"
  19.     for PID in `ls /proc | grep "^[0-9]\+$" | sort -V`; do
  20.         STACK="/proc/$PID/stack"
  21.         if [ -f $STACK ]; then
  22.             DEPTH=`sudo cat "$STACK" | wc -l`
  23.             echo "$PID" >> $DIR/$DEPTH
  24.         fi
  25.     done
  26. }
  27.  
  28. function print_stack {
  29.     DIR="$1"
  30.     for DEPTH in `ls $DIR`; do
  31.         echo "stack level : $DEPTH"
  32.         cat $DIR/$DEPTH
  33.         echo ""
  34.     done;
  35. }
  36.  
  37. if [ "$1" == "-h" ]; then
  38.     echo "$USAGE"
  39.     exit 0
  40. fi
  41.  
  42. DIR=`mktemp -d`
  43. save_stack $DIR
  44. print_stack $DIR
  45. rm -rf $DIR
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement