SHARE
TWEET

Untitled

a guest Dec 3rd, 2019 70 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top