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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Скрипт для отсеживание загрузки памяти  (Прочитано 1321 раз)

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

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Сразу сделаю оговорку, я не программист, хотя и жалею об этом. Ситуация такая, у меня установлена Kubuntu 11.10 х64 на нее устанавливаю Скайп скачаный с оф. сайта и что бы я не пробовал делать у меня присутствует проблемка в виде загрузки процессора и оперативной памяти при старте скайпа. Причем данная проблема появляется не стабильно, а через раз, т.е. может запуск пройти удачно, а может и нет. Если запуск проходит не удачно, то все жутко начинает виснуть и закрыть скайп становится проблемой, потом нужно ждать пока система отойдет от этой загрузки и запускать скайп заново. Короче надоело мне это, от скайпа отказаться возможности нет.
По существу: Подскажите как написать скрипт, который будет отслеживать загрузку оперативной памяти, желательно в %, у определённого приложения (скайп) и в случае превышения, например, 60% он сразу будет убивать этот процесс, после чего он ждет какое-то время и повторяет цикл. Цикл будет повторятся до тех пор, пока не будет нормальной роботы.

Я уже примерно сообразил как это можно сделать, но загвоздка в том, что я не программер. Для начала мне бы заставить скрипт отслеживать 10 колонку команды "top |grep skype" и сравнивать ее с максимально разрешенными % загрузки. Я так понимаю 10 колонка должна задаваться как переменная и сравниваться с константой, например, >= 60 %.

Буду благодарен за помощь!

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Скрипт для отсеживание загрузки памяти
« Ответ #1 : 27 Марта 2012, 08:29:21 »
Для начала мне бы заставить скрипт отслеживать 10 колонку команды "top |grep skype" и сравнивать ее с максимально разрешенными % загрузки.
На bash как-то так выделяется что-то
top -b -n 1 | grep "skype" | awk ...
Проще написать на питоне, типа так
#! /usr/bin/env python
import os

temp=os.popen('top -b -n 1 | grep skype').read().split()
if float(temp[9])>60.0:
os.open('pkill -9 skype && skype') 
Чтобы это работало всегда, надо скрипт сделать демоном и запускать или в начале сессии (это стандартное решение) или перед запуском skype (это нестандарт).
« Последнее редактирование: 27 Марта 2012, 09:45:55 от alexander.pronin »

Оффлайн Vitsliputsli

  • Старожил
  • *
  • Сообщений: 1293
    • Просмотр профиля
Re: Скрипт для отсеживание загрузки памяти
« Ответ #2 : 27 Марта 2012, 08:58:07 »
на bash:
if [ $[`top -n1 | grep skype | cut -b52-54`] -gt 60 ]; then killall skype; fi

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Re: Скрипт для отсеживание загрузки памяти
« Ответ #5 : 27 Марта 2012, 16:44:50 »
Спасибо всем за ответы! ОГРОМНОЕ! Как будет готово, отпишусь, если кому интересно)

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Скрипт для отсеживание загрузки памяти
« Ответ #6 : 27 Марта 2012, 17:30:41 »
вариант без top: ps h -o pmem `pgrep skype`

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Re: Скрипт для отсеживание загрузки памяти
« Ответ #7 : 31 Марта 2012, 14:20:35 »
alexander.pronin, Вы говорите, что лучше писать на Питоне, но что-то у меня не выходит, начал с самого простого:
#! /usr/bin/env python

print "Hello"


И сразу получил ошибку:

Warning: unknown mime-type for "Hello" -- using "application/octet-stream"
Error: no such file "Hello"

Подскажите, что и куда нужно дописать, спасибо!

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Скрипт для отсеживание загрузки памяти
« Ответ #8 : 31 Марта 2012, 14:34:46 »

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Re: Скрипт для отсеживание загрузки памяти
« Ответ #9 : 31 Марта 2012, 14:37:35 »
Спасибо, но не помогло(

Оффлайн M@xiMiLLiaN

  • Любитель
  • *
  • Сообщений: 78
  • Linux Mint 14 Mate x64
    • Просмотр профиля
Re: Скрипт для отсеживание загрузки памяти
« Ответ #10 : 31 Марта 2012, 14:45:48 »
как не помогло, если без пробела всё работает?

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Re: Скрипт для отсеживание загрузки памяти
« Ответ #11 : 31 Марта 2012, 14:49:11 »
Блин! Только сильно не ржите! Я запускал скрипт чрез sh  ;D
sh ./1.py
Все работает, спасибо!

Пользователь решил продолжить мысль 31 Марта 2012, 15:16:21:
А не поможете еще с 2-мя вопросиками?

1. #! /usr/bin/env python
import os

temp=os.popen('top -b -n 1 | grep skype').read().split()
if float(temp[9])>60.0:
os.open('pkill -9 skype && skype') 

9 в этом коде это номер поля?, Мне нужно 10-е поле (загрузка памяти), т.к. скайп больше грузит оперативку чем процессор. Или это без учета PID?

2. Как можно узнать запущено приложение или нет?

Ну уж тогда третье спрошу, подскажите какой-то мануальчик или может какие-то уроки по Питону, что бы я хоть понимал что тут написано temp=os.popen('top -b -n 1 | grep skype').read().split()
« Последнее редактирование: 31 Марта 2012, 15:16:21 от Vlad.V »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Скрипт для отсеживание загрузки памяти
« Ответ #12 : 02 Апреля 2012, 08:19:13 »
temp=os.popen('top -b -n 1 | grep skype').read().split()

1. Выполняется bash команда
top -b -n 1 | grep skype
- результат читается
- результат делится на кортеж (типа неизменяемый массив) с помощью разделителя пробела (по умолчанию)
- результат сохраняется в переменной temp
if float(temp[9])>60.0:
os.open('pkill -9 skype && skype') 

2. 10 член кортежа (первый - 0), хранящийся в переменной temp, преобразуется в вещественный тип и сравнивается с 60
- если результат больше, то выполняется bash команда
pkill -9 skype && skype
Как-то так.
PS. В сети полным-полно всяких мануалов по питону.
Мне понравилась книга -
Прохоренок "Python. Самое необходимое". Я ее купил и ни разу не пожалел.
 
« Последнее редактирование: 02 Апреля 2012, 08:39:17 от alexander.pronin »

Оффлайн Vlad.V

  • Автор темы
  • Активист
  • *
  • Сообщений: 478
    • Просмотр профиля
Re: Скрипт для отсеживание загрузки памяти
« Ответ #13 : 02 Апреля 2012, 11:13:07 »
Спасибо за ответ! Попробую найти эту книгу в сети  :coolsmiley:

 

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