strace'ing / profiling bash script - PullRequest
0 голосов
/ 15 мая 2018

В настоящее время я пытаюсь протестировать bash-скрипт в 4 разных версиях. Каждый выполняет гигантскую rsync работу, и обычно она занимает очень много времени. В сценарии bash есть много шагов, которые включают в себя настройку и разрушение среды для rsync.

Однако, когда я запускаю strace для сценариев bash, я получаю удивительно короткие результаты, что заставляет меня поверить, что strace на самом деле не отслеживает время ожидания такой команды, как rsync (которая может появляться в подоболочке и rsync полностью не записывается), или , он периодически просыпается и спит в течение другого периода времени, который не учитывает strace. Вот фрагмент кода:

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 99.98   12.972555      120116       108        52 wait4
  0.01    0.000751          13        56           clone
  0.00    0.000380           1       553           rt_sigprocmask
  0.00    0.000303           2       197        85 stat
  0.00    0.000274           2       134           read
  0.00    0.000223          19        12           open
  0.00    0.000190          48         4           getdents
  0.00    0.000110           1        82         8 close
  0.00    0.000110           1       153           rt_sigaction
  0.00    0.000084           1        61           getegid
  0.00    0.000074           4        19           write

Итак, какие инструменты я могу использовать, которые похожи на strace, ИЛИ, может быть, я пропускаю какой-то тип рекурсивного флага в strace, чтобы правильно узнать, где находится мой bash-скрипт?

Я бы хотел что-то вроде:

% time   command
------  --------
...      rsync
...      ls

Любые предложения будут оценены. Спасибо!

...