Як я можу відстежувати час з командного рядка?


11

Шукаю команду для відстеження часу.

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

  1. Виконайте команду
  2. ... зробіть щось інше ...
  3. Поверніться до вікна терміналу і зупиніть команду
  4. Як результат ви отримуєте час, що минув між 3 і 1

@JacobVlijm Мені дуже подобається чіткість відповіді Анвара нижче. Як нетехнічному користувачеві легше зрозуміти, що відповіді в можливій копії теми. Як ти гадаєш?
orschiro

2
@JacobVlijm Я не думаю, що це дублікат. ОП тут запитує секундомір, питання там - питання про те, як виміряти час виконання процесу.
Сет

@Set ok, голосування відкликано.
Яків Влійм

@Eric Ви читали мій коментар вище?
Сет

Відповіді:


20

Ця відповідь пропонує використовувати

time cat

і використовувати Ctrl- Dщоб побачити час.

Ви також можете використовувати

time read

і використовувати Enterключ

Також перевірте цю відповідь на те саме запитання


2
Це відображається на XKCD linux cheat sheet store-xkcd-com.myshopify.com/products/linux-cheat-shirt
exussum

ніт: закінчується 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()працює також, але вимагає додаткового імпорту).
2012р. Кампіон

@ 2012rcampion хороший момент, відредаговано це вже.
Сергій Колодяжний

1
Зазвичай вважається поганою практикою ловити всі винятки (хоча в цьому випадку це, мабуть, не надто актуально), except KeyboardInterruptбуло б краще
Tobias Kienzler

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

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