Как я могу отслеживать время из командной строки?


11

Я ищу команду для отслеживания времени.

Я представляю следующий рабочий процесс:

  1. Запустите команду
  2. ... сделать что-то еще ...
  3. Вернитесь в окно терминала и остановите команду
  4. В качестве выхода вы получаете время, прошедшее между 3 и 1

@JacobVlijm Мне очень нравится ясность ответа Анвара ниже. Как нетехнический пользователь, легче понять, что ответы в возможной дублирующейся теме. Как вы думаете?
Орширо

2
@JacobVlijm Я не думаю, что это дубликат. ОП здесь запрашивает секундомер, а там задается вопрос, как измерить время выполнения процесса.
Сет

@ Хорошо, голосование отменено.
Джейкоб Влейм

@ Эрик, ты прочитал мой комментарий выше?
Сет

Ответы:


20

Этот ответ предлагает использовать

time cat

и использовать Ctrl- Dчтобы увидеть время.

Вы также можете использовать

time read

и используйте Enterключ

Также проверьте этот ответ на тот же вопрос


2
Это появляется на чит-листе XKCD linux store-xkcd-com.myshopify.com/products/linux-cheat-shirt
exussum

nit: закончить catс ^Dвместо, ^Cчтобы выйти с 0 вместо 130.
wchargin

6

Как насчет:

stopwatch() { 
    local start=$SECONDS
    read -p "Hit Enter..."
    echo $((SECONDS-start)) seconds elapsed
}

В бою:

$ stopwatch 
Hit Enter...
14 seconds elapsed

3

Простой способ сделать это - взять время начала, а как только вы остановите скрипт - время остановки. Наконец, напечатайте разницу во времени. Это легко сделать с помощью Python:

python -c $'import time;start=time.time();\ntry:\n\twhile True: time.sleep(0.25)\nexcept: print(time.time()-start)'

Или длинная версия для удобства чтения:

import time
start=time.time();
try:
    while True: time.sleep(0.25)
except: 
    print(time.time()-start)

Остановка производится с помощью Ctrl + C


1
while True: passзапускает процессор на 100%. Я бы предложил while True: time.sleep(1e9)вместо этого ( signal.pause()работает тоже, но требует дополнительного импорта).
2012rcampion

@ 2012rcampion Хороший вопрос, отредактировал это уже.
Сергей Колодяжный

1
Обычно считается плохой практикой отлавливать все исключения (хотя в этом случае это, вероятно, не слишком актуально), except KeyboardInterruptбыло бы лучше
Тобиас Кинцлер

3
@TobiasKienzler Я знаю об этом. Если это большой проект, я делю вещи, чтобы поймать несколько исключений. Не стесняйтесь смотреть на мой другой код, индикаторы и тому подобное. Но в этом случае есть только один, так что это не совсем актуально. Плюс, это быстрый и грязный способ. Почему гольфа это немного?
Сергей Колодяжный

Я полностью согласен, просто думал, что стоит упомянуть;)
Тобиас Кинцлер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.