Сохраните в переменной число секунд, которые процесс занял для выполнения

Почему вы хотите использовать старое ядро, когда уже доступны обновленные ядра? Я следовал инструкции для установки последнего ядра

6
задан jww 30 March 2018 в 17:01
поделиться

4 ответа

Вы хотите поместить этот код в свой сценарий или сделать это из процесса, который запускает сценарий?

Для последнего вы можете использовать зарезервированное слово «время», а затем проанализируйте, что он возвращает, чтобы узнать, сколько времени занимает сценарий.

Если вы хотите сделать это из сценария, вы можете установить для переменной SECONDS нулевое значение, и каждый раз после этого, когда вы будете ссылаться на эту переменную, она будет обновляться, чтобы соответствовать количеству прошедших секунд. Итак, вы можете поставить «SECONDS = 0» в самом начале вашего скрипта, и всякий раз, когда вам понадобится прошедшее время, оно будет в переменной SECONDS.

Вы также можете использовать уловку $ SECONDS в командной строке. , например:

$ SECONDS=0; sleep 5 ; echo "that took approximately $SECONDS seconds"

Зарезервированное слово времени и переменная SECONDS задокументированы на странице руководства bash.

16
ответ дан 8 December 2019 в 05:23
поделиться

Используйте команду time. Обратите внимание, что версия времени для bash отличается от / usr / bin / time. У вас должно получиться что-то вроде:

TIME=`/usr/bin/time --format="%e" your_command_here >/dev/null`

Формат просто извлекает значение «реального» времени. Вам нужно будет преобразовать это из строки, если вы хотите сделать что-то большее, чем ее отображение.

Если вы просто хотите экспортировать строку, используйте экспорт .

-1
ответ дан 8 December 2019 в 05:23
поделиться

Это работает в Bash, а также в Zsh:

# Set time format to seconds
TIMEFORMAT=%R
# Time a process
PROC_TIME=$(time (insert command here >/dev/null 2>&1) 2>&1)
echo $PROC_TIME
  • Первые два перенаправления скрывают вывод вашего процесса "> / dev / null 2> & 1"
  • Последнее перенаправление необходимо, потому что " time "печатает время на stderr
7
ответ дан 8 December 2019 в 05:23
поделиться

Используя GNU time ,

\time -p -o time.log $COMMAND

, а затем прочтите time.log .

(Используйте либо \ time или время команды , в противном случае вы будете использовать встроенное время Bash, которое не поддерживает эти параметры.)

Это будет работать, даже если $ COMMAND выводится в stderr (что может запутать ответ Оли) и сохраняет stdout / stderr (чего нет в ответе Фарзи).

-o ... сообщает time отправлять свои выходные данные в файл, а не в stderr (по умолчанию), а -p генерирует традиционное

real 0.00
user 0.00
sys 0.00

, а не стандартное время GNU

0.00user 0.00system 0:00.01elapsed 8%CPU (0avgtext+0avgdata 0maxresident)k
80inputs+0outputs (1major+188minor)pagefaults 0swaps
1
ответ дан 8 December 2019 в 05:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: