Как проверить, сколько времени процесс бежал за законченным?

Расширение фигурной скобки очень полезно, если у Вас есть имена длинного тракта. Я использую его в качестве быстрого способа скопировать файл:

cp /a/really/long/path/to/some/file.txt{,.bak}

скопирует /a/really/long/path/to/some/file.txt кому: /a/really/long/path/to/some/file.txt.bak

Можно также использовать его в последовательности. Я однажды сделал так для загрузки большого количества страниц от сети:

wget http://domain.com/book/page{1..5}.html

или

for i in {1..100}
do
   #do something 100 times
done
13
19.05.2011, 22:32
3 ответа

Я не думаю, что возможно получить такую информацию после того, как процесс уже закончился.

Если Вы знаете заранее о необходимости в той информации можно выполнить команду как

time <command>

например.

~> time sleep 1

real        0m1.003s
user        0m0.002s
sys         0m0.001s
14
27.01.2020, 19:53

Проверьте, поддерживает ли Ваш вариант Unix учет процесса. Например, на Ubuntu (и большинство других дистрибутивов Linux), это обеспечивается acct пакет Установите acct http://bit.ly/software-small. Если бухгалтерская подсистема в порядке, то lastcomm информация о шоу о законченных процессах, включая то, сколько процессорного времени они использовали (стена показывают время, не записывает).

При необходимости в синхронизации для определенной программы вызовите ее через time.

При необходимости в более точной информации используйте более необычный пакет аудита, например, контрольная подсистема в соответствии с Linux.

7
27.01.2020, 19:53
  • 1
    Этот ответ потерял свое изображение. –  mattdm 07.03.2016, 23:45
  • 2
    @mattdm, О, это - ссылка, которая была стандартной на, Просит Ubuntu соединение с apt.ubuntu.com, и затем изображение было удалено из imgur. Я, должно быть, использовал его сотни времен через SE, и я не смакую перспективу редактирования их всех. Я все еще требую SE выполнение автоматизированной замены, которую они не сделают, так как они даже не сделали этого когда вся перемещенная документация Java. –  Gilles 'SO- stop being evil' 08.03.2016, 00:01

Прежде чем я увидел этот вопрос и ответы на него, я написал небольшой сценарий bash. Это по-прежнему полезно, если у вас нет прав root и acct не установлен или вы не вызываете свою команду напрямую (в моем случае: я использую графический интерфейс для настройки фоновых процессов). Вам нужно получить PID перед запуском (кто-нибудь заинтересован в добавлении его в скрипт? :)

#!/bin/bash

echo "Checking run time"
read -p "What is the pid? " PID

while true; do
    # sleep needed! used to reduce cpu usage and mass of output
    sleep 5
    ps -eo uid,pid,etime | egrep '$PID' | egrep '$UID'
done

С его помощью найдите PID PROCESS_NAME

ps aux | awk 'NR == 1 || / PROCESS_NAME / '

На самом деле я пробовал комбинировать USER-ID и PID, чтобы сценарий не был неоднозначным, но это не так просто ... ps -eo uid, pid, etime | egrep '$ UID [[: space:]] $ PID' не всегда работает ...

1
27.01.2020, 19:53

Теги

Похожие вопросы