Проверка LA

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

spool
Сообщения: 126
ОС: CentOS 6.6

Проверка LA

Сообщение spool » 14.03.2015 13:18

Здравствуйте. Написал скрипт, который должен проверять LA за 5 мин и выполнять некоторые действия.

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

#!/bin/bash
la=$(uptime | awk '{print $10}' | sed 's/[ ,]*$//')

if [ $la -ge 2.5 ];
then
echo $la
fi


Но получаю
integer expression expected

$la и 2.5 пробовал в кавычках, но результат тот же. Подскажите, пожалуйста, что я сделал не так.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 16115
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Проверка LA

Сообщение Bizdelnick » 14.03.2015 14:00

Подсказать более подробно, чем в сообщении об ошибке, вряд ли возможно.
http://www.multitran.ru/c/m.exe?CL=1&s=integer&l1=1
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

spool
Сообщения: 126
ОС: CentOS 6.6

Re: Проверка LA

Сообщение spool » 14.03.2015 14:13

Bizdelnick
Я прекрасно знаю, что такое integer. Но как тогда можно сравнить дробные числа?
Спасибо сказали:

NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Проверка LA

Сообщение NickLion » 14.03.2015 15:29

В bash'е — никак. Можно использовать bc.
Спасибо сказали:

spool
Сообщения: 126
ОС: CentOS 6.6

Re: Проверка LA

Сообщение spool » 14.03.2015 15:46

NickLion
Благодарю. Теперь все работает.
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4679
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Проверка LA

Сообщение SLEDopit » 14.03.2015 21:23

spool писал(а):
14.03.2015 13:18
uptime | awk '{print $10}' | sed 's/[ ,]*$//'
можно заменить на

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

cut -f2 -d' ' /proc/loadavg

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Проверка LA

Сообщение drBatty » 16.03.2015 11:26

spool писал(а):
14.03.2015 14:13
Но как тогда можно сравнить дробные числа?

умножить их на 10⁶, не?

т.е. часть перед точкой надо умножить на 10⁶, а потом прибавить 10⁶ делённое на часть после точки, при необходимости доведя эту часть до 6и цифр.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Проверка LA

Сообщение NickLion » 16.03.2015 11:53

drBatty
Как по мне заюзать bc проще. Да, его может не быть, но если не нужен универсальный скрипт, то вполне подходящее решение.
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Проверка LA

Сообщение drBatty » 17.03.2015 10:54

NickLion писал(а):
16.03.2015 11:53
Как по мне заюзать bc проще.

по мне тоже. Просто ваше "никак" в данном случае не совсем правильно, bash работает с числами до 9`223`372`036`854`775`807, потому 6 десятичных знаков после точки вполне осилит. Обычно больше и не нужно.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Проверка LA

Сообщение NickLion » 17.03.2015 11:09

drBatty
Согласен, просто когда говорил "никак" думал только о встроенный вариантах без велосипедов с приведением к целым или строкам.
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Проверка LA

Сообщение drBatty » 17.03.2015 12:16

ну в данном случае bc конечно более годный вариант.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: