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

    −98

    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
    #!/bin/bash
    target=beam.smp
    threashold=500
    sleep=10
    tmpfile=fd-${target}-tmp
    while true ; do
         {  date; ls -l /proc/$(pgrep $target)/fd; } > $tmpfile
         nfds=$( cat $tmpfile | wc -l )
         if (( $nfds > $threashold )) ; then
             netstat >> $tmpfile
             file="fd-${target}-$(date)"
             cp $tmpfile "$file"file
         fi
         sleep $sleep
    done

    It ain't stupid if it works.

    Запостил: CHayT, 31 Марта 2017

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

    • Предыстория: в начале дремучих нулевых некто пытался затраблшутить проблему, которая воспроизвелась лишь единожды, для этого добавил отладочных логов.
      ...Проблема воспроизвелась. Лет через десять. Но оказалось, что эти дебажные логи неистово текли дескрипторами, и ёбнулусь всё. Снаут затраблшутил.
      Мораль: забей на редкую проблему.
      Ответить
      • Забыл killall -9 $target куда-нибудь на 12 строку.
        Ответить
      • > Мораль: забей на редкую проблему.

        на больших продакшенах, на сколько долго есть надежный воркараунд и проблема появляется не слишком часто (реже чем раз в месяц) - то забивают. потому что других проблем - частых и/или без воркараундов - хватает.

        главное где в сервис мануал продокументровать.
        Ответить
    • показать все, что скрытоЧто даёт строка
      #!/bin/bash

      ?
      Ответить

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