Я немного опоздал, но я поделюсь своим трюком с командной строкой, используя только значение по умолчаниюps
WATCHED_PID=$({ command_to_profile >log.stdout 2>log.stderr & } && echo $!);
while ps -p $WATCHED_PID --no-headers --format "etime pid %cpu %mem rss"; do
sleep 1
done
Я использую это как один -вкладыш. Здесь первая строка запускает команду и сохраняет PID в переменной. Затем ps напечатает прошедшее время, PID, процент использования ЦП, процент памяти и память RSS. Вы также можете добавить другие поля.
Как только процесс завершится, команда ps
не вернет «успех», и цикл while
завершится.
Вы можете игнорировать первую строку, если PID, который вы хотите профилировать, уже запущен. Просто поместите нужный идентификатор в переменную.
Вы получите такой вывод:
00:00 7805 0.0 0.0 2784
00:01 7805 99.0 0.8 63876
00:02 7805 99.5 1.3 104532
00:03 7805 100 1.6 129876
00:04 7805 100 2.1 170796
00:05 7805 100 2.9 234984
00:06 7805 100 3.7 297552
00:07 7805 100 4.0 319464
00:08 7805 100 4.2 337680
00:09 7805 100 4.5 358800
00:10 7805 100 4.7 371736
....
Проблема в том, что для беспроводной сетевой карты отсутствует драйвер Linux. Таким образом, физическое удаление карты решило проблему.