Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Помощь в шелл-скрипте  (Прочитано 955 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн keela

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Помощь в шелл-скрипте
« : 02 Марта 2009, 08:25:54 »
В общем, дело вот в чем. На одной из машин в сети ретранслируется несколько тв каналов по средством VLC, у которой в свою очередь проблемы с потреблением памяти - порой начинает жрать ее в неимоверных количествах  :( Нужно написать скрипт, который будет перезапускать все влц'шные процессы при большом потреблении памяти.
Собственно нужно перегнать строчку, получаемую командой ниже в массив и просуммировать его элементы.

vlcmem=`ps axv|grep vlc|awk '{vv=$10} vv=="/usr/bin/vlc" {print $8}'`
Вот, что выводит:
7584 7504 7324 7804 7320 7300 7816 7288 7572 7244 7328 7612 8724 9032 8264 9684 7972 7820 8256 12892
Пробовал воспользоваться awk, на как в него передать внешнюю переменную?

i=0
k=20
while [ i -ne k ] do
   i=$(($i+1))
   a[i]=`echo $vlcmem|awk '{print $i}'`
done

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Помощь в шелл-скрипте
« Ответ #1 : 02 Марта 2009, 10:48:01 »
Надо все в awk-е считать.

Что-то типа такого
ps axv | awk 'BEGIN {total_mem=0;} \
                   /vlc$/ {total_mem+=$8; } \
                    END {print total_mem;}'

upd: протестировал.
« Последнее редактирование: 02 Марта 2009, 11:22:02 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Помощь в шелл-скрипте
« Ответ #2 : 02 Марта 2009, 11:17:08 »
А еще полезно собрать vlc из исходников с минимумом оптимизаций, погонять его под valgrind-ом и отослать выловленные ошибки авторам.

Скорее всего, где-то memory leak. И я даже подозреваю, где. В ffmpeg, в mpegtsenc или рядом.
Мой багрепорт туда висит уже несколько месяцев, но, видать, mpegTS мэйнтейнер загружен или забил на все.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Помощь в шелл-скрипте
« Ответ #3 : 02 Марта 2009, 11:27:19 »
А в исходный конвеер полезно добавить еще grep -v grep, чтоб процесс grep не мешался.

ps axv| grep vlc | grep -v grep ... далее по тексту
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Помощь в шелл-скрипте
« Ответ #4 : 02 Марта 2009, 11:32:58 »
И последнее.
А чего vlc?
Почему не Live555?
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн keela

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Помощь в шелл-скрипте
« Ответ #5 : 02 Марта 2009, 13:35:24 »
Надо все в awk-е считать.

Что-то типа такого
ps axv | awk 'BEGIN {total_mem=0;} \
                   /vlc$/ {total_mem+=$8; } \
                    END {print total_mem;}'

upd: протестировал.

Спасибо, работает  :) А насчет Live555, то использовал его как-то для vod, а вот для ретрансляции по юникасту пока как-то не доводилось.

 

Страница сгенерирована за 0.018 секунд. Запросов: 22.