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

11

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

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

  1. Запустите команду
  2. ... сделать что-то еще ...
  3. Вернитесь в окно терминала и остановите команду
  4. В качестве выхода вы получаете время, прошедшее между 3 и 1
orschiro
источник
@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 Я знаю об этом. Если это большой проект, я делю вещи, чтобы поймать несколько исключений. Не стесняйтесь смотреть на мой другой код, индикаторы и тому подобное. Но в этом случае есть только один, так что это не совсем актуально. Плюс, это быстрый и грязный способ. Почему гольфа это немного?
Сергей Колодяжный
Я полностью согласен, просто думал, что стоит упомянуть;)
Тобиас Кинцлер