rinetd грузит процессор - пытаюсь вытащить %

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
romaxa
рядовой
Сообщения: 44
Зарегистрирован: 2013-10-17 16:58:52

rinetd грузит процессор - пытаюсь вытащить %

Непрочитанное сообщение romaxa » 2020-05-01 8:00:54

Всем доброе время.

Переодически у меня rinetd грузить процессор начинает, при этом перезагрузка его помогает.
Делаю что-то типа:

Код: Выделить всё

#!/bin/sh
top | grep rinetd
Получаю строчку: 819 root 1 34 0 11M 2576K select 1 164:28 95.00% rinetd

Как мне лучше вытащить цифру процента загрузки, чтобы распознать процент и его перезапустить?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

romaxa
рядовой
Сообщения: 44
Зарегистрирован: 2013-10-17 16:58:52

rinetd грузит процессор - пытаюсь вытащить %

Непрочитанное сообщение romaxa » 2020-05-01 8:42:42

Сделал вот так, может можно как-то проще?

Код: Выделить всё

RSLT=`top | grep rinetd | tr " " "\n" | grep % | tr "%" "\n" | cut -c 1-2`
echo $RSLT

romaxa
рядовой
Сообщения: 44
Зарегистрирован: 2013-10-17 16:58:52

rinetd грузит процессор - пытаюсь вытащить %

Непрочитанное сообщение romaxa » 2020-05-01 9:30:34

Если процент был менее 10, то ошибку выводило.
Получилось так, но мне кажется это сильно длинно, может можно проще?

Код: Выделить всё

RSLT=`top | grep rinetd | tr " " "\n" | grep % | tr "%" "\n" | sed -r "s/\..+//"`

#echo $RSLT

Аватара пользователя
Neus
капитан
Сообщения: 1795
Зарегистрирован: 2008-09-08 21:59:56

rinetd грузит процессор - пытаюсь вытащить %

Непрочитанное сообщение Neus » 2020-05-01 17:52:27

man ps
man procstat
«Вы никогда не сумеете решить возникшую проблему,
если сохраните то же мышление и тот же подход,
который привёл вас к этой проблеме.»
© Альберт Эйнштейн

romaxa
рядовой
Сообщения: 44
Зарегистрирован: 2013-10-17 16:58:52

rinetd грузит процессор - пытаюсь вытащить %

Непрочитанное сообщение romaxa » 2020-05-02 9:15:22

А чем top не подходит? Разве не проще взять процент в строке, в которой четко указан процент?
Neus писал(а):
2020-05-01 17:52:27
man ps
man procstat

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35266
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

rinetd грузит процессор - пытаюсь вытащить %

Непрочитанное сообщение Alex Keda » 2020-08-27 11:37:29

я киляю раз в сутки, ночью и запускаю заново
это как бы известная у него бага...
Убей их всех! Бог потом рассортирует...

romaxa
рядовой
Сообщения: 44
Зарегистрирован: 2013-10-17 16:58:52

rinetd грузит процессор - пытаюсь вытащить %

Непрочитанное сообщение romaxa » 2020-08-28 10:26:39

Я поставил писать в лог, не так и часто он тупит у меня.

Раз в 1-2 месяца...

Вот скрипт, который мониторит его и пишет лог:

Код: Выделить всё

#!/bin/sh

check_date="`date +%Y-%m-%d' '%H:%M`"
check_log="/usr/local/etc/cameracheck/log"

PID=`cat /var/run/rinetd.pid`

RSLT=`ps -u -p "$PID" | grep rinetd`

RSLT=`echo $RSLT | awk '{print $3}' | sed -r "s/\..+//"`

# processor overload more then 80%
if [ "$RSLT" -gt 80 ]
then
#restart rinetd
#write to log
{
echo "Overload processor: $check_date - $RSLT%: restarting..."  >> $check_log
echo "Overload processor: $check_date - $RSLT%: restarting..." |  mail -s "Rinetd restarted" root

/usr/local/etc/rc.d/rinetd restart

}
fi