Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вычисление времени устновки (компиляции) 
V
    Опции темы
BlackRu
Дата 18.10.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: 2
Всего: 4



На ум приходит сразу 
# date; emerge  openoffice; date 
 а дальше посчитать в уме smile
хотелось бы вывести в конце разницу между первым и вторым date, как можно проще 

P.S. ой, *вычИсление, sorry my mistake.  

Это сообщение отредактировал(а) BlackRu - 18.10.2009, 17:11


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
bilbobagginz
Дата 18.10.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



создай скрипт:
Код

#!/bin/bash
time emerge openoffice

time - распечатает тебе время system, user, real time.








--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
BlackRu
Дата 18.10.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: 2
Всего: 4



bilbobagginz, aaа, спасибо, а я уже начал было втыкать в учебник по bash на тему, как через переменные это сделать. 


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
BlackRu
Дата 18.10.2009, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: 2
Всего: 4



но-таки интереса ради, я был на правильном пути ? 
И кстати, присвоенный псевдоним команды может быть рассмотрен как переменная т.е.:

Код

alias D1=date alias D2=date; D1 emerge openoffice D2
 
И можно ли из D1 вычесть D2  в данном случае? Т.е. что-то вроде:

Код

 D1  && emerge openoffice  &&  D2 &&  D4=$((D2 - D1)) &&  echo -D4  "$D4"



Это сообщение отредактировал(а) BlackRu - 18.10.2009, 20:02


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
BlackRu
Дата 18.10.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: 2
Всего: 4



Нет, все что я там написал выше про alias - бред. Зашел на канал irc bash


Код

start=$(date +%s);emerge openoffice;end=$(date +%s);echo "duration:  $((end-start))"



--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
nickless
Дата 19.10.2009, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Для emerge есть еще утилитка qlop из app-portage/portage-utils, которая парсит лог и выдаёт среднее значение:
Код

% qlop -tH mozilla-firefox
mozilla-firefox: 4 minutes, 35 seconds for 10 merges



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
BlackRu
Дата 19.10.2009, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: 2
Всего: 4



nickless, спасибо. 
Кстати, пока читал про date, нашел инфу про ключ %N - наносекунды, автор рекомендует использовать этот ключ в скриптах для генерации случайных чисел, проверил - действительно, выполнение одной и той же команды  несколько раз подряд (с минимальным временем выполнения) дает очень разнящиеся результаты.  

Код

localhost *** # start=$(date +%N); sleep 1;end=$(date +%N); echo "$((end-start))"
[color=blue]2582096[/color]
localhost ***# start=$(date +%N); sleep 1;end=$(date +%N); echo "$((end-start))"
[color=blue]2601592[/color]
localhost  ***# start=$(date +%N); sleep 1;end=$(date +%N); echo "$((end-start))"
[color=blue]2676352[/color]


А иногда и ошибку выдает: 

Код

 start=$(date +%N); sleep 1;end=$(date +%N); echo "$((end-start))"
bash: 060047398: value too great for base (error token is "060047398")

Причем я сначала подумал, что ну максим последние семь цифр буду меняться, ан нет - все 9
причем диапазон очень мощный. 
Код

localhost ***# start=$(date +%N); sleep 1;end=$(date +%N); echo "$((end-start))"
3228837

localhost ***# start=$(date +%N); sleep 1;end=$(date +%N); echo "$((end-start))"
5299735





В общем меня все это время обманывали - компьютер не точный прибор.




Это сообщение отредактировал(а) BlackRu - 19.10.2009, 13:52


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
nickless
Дата 21.10.2009, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Цитата(BlackRu @  19.10.2009,  12:48 Найти цитируемый пост)
bash: 060047398: value too great for base (error token is "060047398")

Просто числа начинающиеся с 0 считаются октальными.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
BlackRu
Дата 27.10.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: 2
Всего: 4



Вот он - плод моего процесса изучения bash
Как мне оформить правильно пробелы здесь?
Search=Поиск по названию;
Search2=Поиск по описанию;
В кавычки не получается взять. 

Код

function timestart {
start=$(date +%S) m1=$(date +%M) h1=$(date +%H);
}
function timestop {
stop=$(date "+%S") m2=$(date +%M) h2=$(date +%H);
echo "Время установки  $((h2-h1)) час $((m2-m1)) мин $((stop-start)) сек";
}

Search=Поиск по названию;
Search2=Поиск по описанию;
Compile=Установить;
OPTIONS="$Search $Search2 $Compile"
select opt in $OPTIONS; do
if [ "$opt" = "$Search" ]; then
timestart; emerge -s $1; timestop;
exit
elif [ "$opt" = "$Search2" ]; then
timestart; emerge -S $1; timestop
exit
elif [ "$opt" = "$Compile" ]; then
timestart; emerge -av $1; timestop;
exit
else
clear
echo bad option
fi
done








P.S. Правильный расчет времени правда еще не сделал.

Это сообщение отредактировал(а) BlackRu - 27.10.2009, 17:52


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
nickless
Дата 27.10.2009, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Цитата(BlackRu @  27.10.2009,  13:28 Найти цитируемый пост)
Как мне оформить правильно пробелы здесь?

Использовать array (http://tldp.org/LDP/abs/html/arrays.html):
Код

ta="bla blub"
tb="ololol"
tc="abc defg      hij"
area=("$ta" "$tb" "$tc")
for f in "${area[@]}"; do echo "$f"; done


ЗЫ
Отклонились от темы.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
bilbobagginz
Дата 27.10.2009, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



Код

echo "Время установки  $((h2-h1)) час $((m2-m1)) мин $((stop-start)) сек";

т.е.  если установка началась в 22 часа 22 мин 22 сек. а закончилась в 3 часа 3 мин. 3 секунды, твой скрипт покажет:
-19 ч., -19 мин. -19 сек. 
правильно ?

чем тебя вывод time, графа "Real" не устраивает ?


Это сообщение отредактировал(а) bilbobagginz - 27.10.2009, 21:59


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
BlackRu
Дата 27.10.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: 2
Всего: 4



Да, правильно - время неверно показывает. 

Я пытаюсь освоить bash, хочется поиграться с арифметикой. 


Это сообщение отредактировал(а) BlackRu - 27.10.2009, 22:15


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
BlackRu
Дата 28.10.2009, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: 2
Всего: 4



Вот окончательный вариант:
Для работы необходим пакет cowsay smile   
Код

#!/bin/bash
cowsay Что будем делать?;
function timestart {
st=$(date +%s);sleep 1;stp=$(date +%s);secunda=$((stp-st));
start1=$(date "+%H:%M:%S");
start=$(date +%s);
function timestop {
stop1=$(date "+%H:%M:%S");
stop=$(date +%s);
timer=$((stop-start));
minuta=$((secunda+59));
chas=$((minuta*minuta));
}
function showtime {
if [ $timer -gt $chas ]; then
ch=$((timer/chas)) min1=$((timer%chas))  min=$((min1/minuta)) sec=$((min1%minut$
echo $ch час $min мин $sec сек
elif [ $timer -gt $minuta ]; then
min=$((timer/minuta)) sec=$((timer%minuta));
cowsay $min мин $sec сек
else
cowsay Общее время $timer сек;
fi
}
}
function showst {
echo Started at $start1;
}
function showsp {
echo Finished at $stop1;
}
Compile="Установить"
Search="Поиск(s)";
Search2="Поиск(S)";
Uninst="Удалить";
OPTIONS="$Compile $Search $Search2 $Uninst"
select opt in $OPTIONS; do
if [ "$opt" = "$Compile" ]; then
timestart; emerge -av $1; timestop;showtime; showst;showsp;
exit
elif [ "$opt" = $Search ]; then
timestart; emerge -S $1; timestop; showtime;showst;showsp;
exit
elif [ "$opt" = "$Search2" ]; then
timestart; emerge -S $1; timestop; showtime;showst;showsp;
exit
elif [ "$opt" = "$Uninst" ]; then
timestart; emerge -C $1; timestop; showtime;showst;showsp;
exit
else
clear
echo bad option
fi


Это сообщение отредактировал(а) BlackRu - 28.10.2009, 19:04


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4301 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.