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

Оффлайн Mimas

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

Оффлайн Skull

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

Оффлайн Mimas

  • Участник
  • *
  • Сообщений: 239
  • Mimas
    • Мой Линукс
Огромное спасибо за исчерпывающий ответ. Можно, наверное, и в 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