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


14

Я запустив хеш-перевірку великого файлу і не хочу перезапускати його за допомогою time. Як я можу отримати час настінного годинника, не використовуючи час на початку або використовуючи dateпрямо перед тим, як викликати команду?

Відповіді:


12

Для запущеного процесу ви можете зробити це:

PID=5462
command ps -p "$PID" -o etime
command ps -p "$PID" --no-headers -o etime

Як загальна функція, ви можете змінити підказку оболонки. Це моє чітке визначення:

TERM_RED_START=$'\033[1m\033[31m'
TERM_RED_END=$'\033(B\033[m'
PS1='\nec:$(ec=$?; if [ 0 -eq $ec ];
then printf %-3d $ec;
else echo -n "$TERM_RED_START"; printf %-3d $ec; echo "$TERM_RED_END";
fi) \t  \u@\h:\w\nstart cmd:> '
PS2="cont. cmd:> "

Відповідна для вас частина \tчасу.

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

Для повного рішення вам потрібна функція аудиту (яка реєструє час початку та закінчення процесів). Але це може спричинити величезну кількість даних, якщо вони не можуть бути обмежені оболонкою.


1

Спираючись на прийняту відповідь, ви також можете постійно контролювати минулий час запущеного процесу, використовуючи watch:

PID=5462
watch command ps -p "$PID" -o etime
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.