The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"помогите написать таймер"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"помогите написать таймер"  
Сообщение от nastr email(??) on 03-Апр-09, 13:52 
Есть шелловский скрипт вначале которого запускается другой скрипт, который выполняет команды на удалённом серваке, нужно дождаться окончания выполнения второго скрипта.
После чего продолжается выполнение первого скрипта.
В этот момент я просто ожидаю, то есть на монитор ничего не выводится, второй скрипт выполняется минут 5.
Я хочу написать таймер, так что бы второй скрипт запускался в фон и в этот же момент запускался таймер, который выводил бы время выполнения второго скрипта, а по завершению скрипта в фоне, таймер заканчивал бы свою работу.
То есть, я запускаю скрипт:
$ ./all_in_one.sh
# жду минут 5, после чего продолжается выполнения первого скрипта
какие есть предложения?
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "помогите написать таймер"  
Сообщение от const86 (ok) on 03-Апр-09, 14:27 
Так и не сказал, что конкретно должен делать т.н. таймер.
Притворюсь телепатом и предположу, что он должен рисовать звёдочку раз в секунду:

timer() {
  while sleep 1; do echo -n '* ' >&2; done
}

timer &
timer_pid=$!
ssh bla bla bla
kill $timer_pid

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "помогите написать таймер"  
Сообщение от nastr email(??) on 03-Апр-09, 15:54 
Извиняюсь, не полностью изложил мысль.
В момент ожидания, когда выполняется второй скрипт (ориентировочно 5 мин).
Я хочу что бы на экране выводилось время выполнения второго скрипта, то есть с 0 да 60, секунд и т.д.
минуты : секунды


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "помогите написать таймер"  
Сообщение от nastr email(??) on 06-Апр-09, 10:33 
спасибо за помощь, вот то что я хотел:
timer () {
BEGIN=$(date +%s)
BACK="\b\b\b\b"
while true; do
        NOW=$(date +%s)
        let DIFF=$(($NOW - $BEGIN))
        let MINS=$(($DIFF / 60))
        let SECS=$(($DIFF % 60))
if [ "$DIFF" != "$OLDDIFF" ]
then
        echo -ne $BACK
        echo -ne $MINS:`printf %02d $SECS`
fi
let OLDDIFF=DIFF
done
}
timer &
timer_pid=$!
./script.sh
kill $timer_pid
echo "continue of main script"
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "помогите написать таймер"  
Сообщение от nastr email(??) on 06-Апр-09, 13:24 
Есть проблема в том что в Solaris, у date нету параметра %s, то есть использовать `date +%s` нельзя.
Другой вариант написания таймера - через двойной цыкл:
for i in 0 1 2 3 4 5 6
do
until [ "$a" = 59 ]
do
let a=$(($a + 1))
echo "$i : $a"
done
a=0
done

этот скрипт выводит:
0 : 1
0 : 2
0 : 3
0 : 4

Вопрос: как сделать что бы удалялась первая строка (0 : 1), а на её месте появлялась следующая (0 : 2) и т.д.?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "помогите написать таймер"  
Сообщение от Ly3 (ok) on 06-Апр-09, 13:28 
>Вопрос: как сделать что бы удалялась первая строка (0 : 1), а
>на её месте появлялась следующая (0 : 2) и т.д.?

curses в помощь... пиши маленькую прогу на си и не парься ;)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "помогите написать таймер"  
Сообщение от nastr email(??) on 06-Апр-09, 14:04 
>>Вопрос: как сделать что бы удалялась первая строка (0 : 1), а
>>на её месте появлялась следующая (0 : 2) и т.д.?
>
>curses в помощь... пиши маленькую прогу на си и не парься ;)
>

:) спасибо за подсказку, но интересует именно шеловский скрипт..

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "помогите написать таймер"  
Сообщение от const86 (ok) on 06-Апр-09, 15:22 
>Вопрос: как сделать что бы удалялась первая строка (0 : 1), а
>на её месте появлялась следующая (0 : 2) и т.д.?

echo -ne "текст\r"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "помогите написать таймер"  
Сообщение от nastr email(??) on 06-Апр-09, 17:42 
>>Вопрос: как сделать что бы удалялась первая строка (0 : 1), а
>>на её месте появлялась следующая (0 : 2) и т.д.?
>
>echo -ne "текст\r"

Спасибо большое, так работает!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру