Автор Тема: Как вывести на монитор время выполнения скрипта? [решено]  (Прочитано 18510 раз)

Оффлайн Mimas

  • Завсегдатай
  • *
  • Сообщений: 230
  • Mimas
    • Мой Линукс
    • Email
Имеется sh-скрипт со всякими командами. Хотелось бы после его завершения видеть время его выполнения. Есть вроде такое time, но никак не пойму как его использовать внутри скрипта. Может кто подскажет?
« Последнее редактирование: 15.06.2011 09:40:42 от Mimas »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Имеется sh-скрипт со всякими командами. Хотелось бы после его завершения видеть время его выполнения. Есть вроде такое time, но никак не пойму как его использовать внутри скрипта. Может кто подскажет?
time script
извне. Если хотите следить за временем в самом скрипте, используйте date:
time=$(date +%s)
...
echo $(($(date +%s)-$time))
Вторая команда показывает количество прошедших секунд.
Андрей Черепанов (cas@)

Оффлайн Mimas

  • Завсегдатай
  • *
  • Сообщений: 230
  • Mimas
    • Мой Линукс
    • Email
Огромное спасибо за исчерпывающий ответ. Можно, наверное, и в FAQ перенести.

Оффлайн barl0g

  • Давно тут
  • **
  • Сообщений: 37
А ещё есть утилита /usr/bin/time, которая позволяет ещё вывести использование процессора и памяти
/usr/bin/time -f '(%e %P %M)' date

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
$ man time | sed -n '58,69p'
       Время

       %E     Фактическое затраченное время (в формате [часы:]минуты:секунды).

       %e     (Нет в tcsh(1).) Фактическое затраченное время (в секундах).

       %S     Общее количество секунд времени ЦП, которое процесс провел в режиме ядра.

       %U     Общее количество секунд времени ЦП, которое процесс провел в пользовательском режиме.

       %P     Процент ЦП, который процесс получил для работы, вычисляется как (%U + %S) / %E.

$ time --help
Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
       [--portability] [--format=format] [--output=file] [--version]
       [--quiet] [--help] command [arg...]
$ cat ~/temp-freq-sensors.sh
i=0
while [ $i -lt 3 ]
   do
      sensors | grep Core | awk '{print $1, $2, $3}' && \
      grep MHz /proc/cpuinfo|awk '{print $4, $2}'; echo && \
      sleep  5
      i=`expr $i + 1`
done
$ time -f %E sh ~/temp-freq-sensors.sh
Core 0: +41.0°C
Core 1: +41.0°C
1000.000 MHz
500.000 MHz
700.000 MHz
900.000 MHz

Core 0: +41.0°C
Core 1: +41.0°C
500.000 MHz
600.000 MHz
600.000 MHz
500.000 MHz

Core 0: +41.0°C
Core 1: +41.0°C
600.000 MHz
700.000 MHz
500.000 MHz
1100.000 MHz

0:15.04