1. bash / Говнокод #8261

    −133

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    #!/bin/bash
    
    ps -eo pid,ppid,comm > data
    
    #treeNet[0]=1
    
    depth=0
    
    init=0
    tree()
    {
    
    #echo $1
    let depth=depth+1
    treeNet[$depth]=1
    
    for ((i=1;i<depth-1;i++))
    do
    # echo ${treeNet[$depth]}
    if [[ ${treeNet[$i]} -eq 0 ]]
    then
    echo -n " "
    fi
    if [[ ${treeNet[$i]} -eq 1 ]]
    then
    echo -n "¦ "
    fi
    
    done
    
    if [[ $init -ne 0 ]]
    then
    echo -n '¦====='
    else
    init=1
    fi
    #let depth=depth+1
    # treeNet[depth]=1
    #prints process name
    echo $(cat data | awk '{ if ($1 == '$1') print $3}' )
    
    
    #printing branches
    local count=0 #amount of child branches
    for i in $(cat data | awk ' {if ($2 == '$1' ) print $1 } ')
    do
    let count=count+1
    #echo $i
    done
    
    #recursive call tree()
    local n=0;
    for child in $(cat data | awk ' {if ($2 == '$1' ) print $1 } ')
    do
    
    let n=n+1
    # echo -n " # child no $n of $count depth $depth debug ${treeNet[1]} ${treeNet[2]} ${treeNet[3]} ${treeNet[4]}"; 
    if [[ $n -eq $count ]]
    then
    #echo -n " last " 
    treeNet[$depth]=0
    fi
    # echo
    # let n=n+1
    tree $child
    done
    treeNet[$depth]=0
    
    let depth=depth-1
    return 0
    }
    
    
    tree 1

    Запостил: kurganec, 21 Октября 2011

    Комментарии (6) RSS

    • до рекурсии на шеле я еще не опускался... интересно было бы посчитать сколько раз "cat data" выполняется.

      если так сильно хотелось процесы деревцом показывать, могли бы и pstree из psmisc проинсталировать.
      Ответить
      • just use inotify (и песочницу), luke (есть inotify-tools) (число процессов x 3)
        Ответить
    • это была лаба сделать pstree без pstree
      Ответить

    Добавить комментарий