Знаходження часу виконання команди заднім числом


22

Я щойно виконував тривалий процес з підказки bash. Заздалегідь, я хотів би, щоб я побіг timeпо ній або відзначив час, коли я його почав.

Чи є спосіб отримати цю інформацію заднім числом? Схоже .bash_history, не включаються часові позначки.

У моєму конкретному випадку це Mac OS X, але мене цікавлять загальні рішення Unix / Linux.

Для уточнення процес зараз завершився, і я вважаю за краще не запускати його знову, якщо це абсолютно не потрібно!


Я також завжди це забував, і я налаштував своє підказку, щоб відображати час.
математика

Відповіді:


23

bash насправді пам’ятає часи, поки ви не закриєте оболонку.

Тому спробуйте бігти

HISTTIMEFORMAT='%x %X ' history

Якщо ви також ставите

HISTTIMEFORMAT=<some format>

у вашому ~/.bashrc, він також буде записаний ~/.bash_historyна вихід при виході, так що ви можете перевірити, що сталося в попередніх сесіях оболонки.


Дивовижний Майк, навіть не думав, що це можливо.
Тім

9

Відповідь Мікель хороша, за винятком того, що якщо запустити програму і піти на деякий час, ви не можете бути впевнені, коли процес закінчиться. Тож навіть якщо у вас є час, коли ви запустили програму, ви не знаєте, скільки часу це зайняло.

У мене немає рішення для випадку, коли потрібно дізнатися без підготовки. Однак якщо ви збираєтеся це зробити ще раз, ви можете зробити так, як я: друкуйте поточний час разом із підказкою оболонки. Таким чином, якщо у вас все ще відкритий термінал, ви можете побачити час запуску програми та час друку наступного запиту. Трохи математики ви отримаєте час виконання.

Для bashцього введіть це у свої .bashrc:

export PS1="\A \u@\h \W \$ "

В zsh, це в вашому .zshrc:

export PS1="%D{%H:%M} %n@%m %1~ %# "

Сказане надасть вашій оболонці швидкий формат <time> <username>@<hostname> <current dir> <$ or % or #>. Про різні снаряди та шалені фантазійні підказки читайте сторінку чоловіка вашої оболонки.

Примітка: це, ймовірно, не допоможе, якщо вам потрібна висока точність або якщо програма видає стільки результатів, що ви не бачите попереднього підказки.


2
З цієї причини я включаю позначку часу в оболонку оболонки, але будьте уважні, що час, який відображається в підказці, - це коли друкується запит, який може сильно відрізнятися від часу, коли ви фактично закінчили набирати текст і натисніть клавішу Enter, щоб запустити команду. Іншими словами, пам’ятайте, що потрібно враховувати «швидкий час простою».
jw013

5

Якщо процес все ще працює, ви можете використовувати psчас, який він розпочав, і скільки часу процесор використав.

Наприклад, для всіх процесів:

ps -eo cputime,start,pid,command,args

Для конкретного піда (12345):

ps -p 12345 -o cputime,start,pid,command,args

Дякую, але процес уже завершено. Я маю це на увазі, якщо я запускаю його знову.
Грем Борланд

Я використовую GNU psв Linux, psв MacOSX може бути BSD, і я не впевнений у аргументах.
jsbillings

Також майте на увазі, що час процесора - це не "реальний час"
Хуан

4

lastcomm (якщо включено облік процесів BSD) дасть вам тривалість виконання (у певному обмеженому сенсі, який може бути або не бути адекватним).

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