Как я могу представить сценарий оболочки?

Это зафиксировало его для меня:

$ sudo apt-get install gconf-defaults-service
9
17.03.2018, 01:31
4 ответа

Запустите при помощи времени согласно предложению Jon Lin:

$ time ls test
test

real    0m0.004s
user    0m0.002s
sys     0m0.002s

Вы не говорите, на каком Unix Ваши сценарии работают, но strace на Linux, связка на Солярисе/AIX, и я думаю, что социалистическая коалиция на hp-ux позволила Вам узнать много о том, что делает процесс. Мне нравится-c опция strace получить хорошую сводку:

]$ strace -c ls
test
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 89.19    0.000998         998         1           execve
 10.81    0.000121         121         1           write
  0.00    0.000000           0        12           read
  0.00    0.000000           0        93        79 open
  0.00    0.000000           0        16           close
  0.00    0.000000           0         2         1 access
  0.00    0.000000           0         3           brk
  0.00    0.000000           0         2           ioctl
  0.00    0.000000           0         4           munmap
  0.00    0.000000           0         1           uname
  0.00    0.000000           0         6           mprotect
  0.00    0.000000           0         2           rt_sigaction
  0.00    0.000000           0         1           rt_sigprocmask
  0.00    0.000000           0         1           getrlimit
  0.00    0.000000           0        30           mmap2
  0.00    0.000000           0         8         7 stat64
  0.00    0.000000           0        13           fstat64
  0.00    0.000000           0         2           getdents64
  0.00    0.000000           0         1           fcntl64
  0.00    0.000000           0         1           futex
  0.00    0.000000           0         1           set_thread_area
  0.00    0.000000           0         1           set_tid_address
  0.00    0.000000           0         1           set_robust_list
  0.00    0.000000           0         1           socket
  0.00    0.000000           0         1         1 connect
------ ----------- ----------- --------- --------- ----------------
100.00    0.001119                   205        88 total

Действительно также обратите внимание, что присоединение этих программ типа трассировки может замедлить программу несколько.

9
27.01.2020, 20:05
  • 1
    На самом деле я использую Redhat главным образом, но я начинаю использовать Debian (человечность) чаще в эти дни также. –  Paul 30.05.2012, 16:22

Проверьте time команда. Можно использовать его для измерения времени, которое требуется для выполнения наряду с некоторой другой полезной информацией как то, где время проводится.

4
27.01.2020, 20:05

Это не является точно профильным, но можно проследить сценарий, когда это работает. Поместить set -xv перед разделом Вы хотите проследить и set +xv после раздела. set -x включает xtrace, который покажет каждую строку, которая выполняется. set -v включает подробный режим, который также покажет строки, которые могут иметь эффект, но не выполняются, такие как переменное присвоение.

Можно также добавить метку времени трассировке. Вам нужен эмулятор терминала, который может добавить метку времени к каждой строке; единственным, о котором я знаю, является RealTerm, который является Windows-программой, но это будет работать с Вином. Вы могли бы также смочь использовать grabserial, хотя я не попробовал его кроме реальными последовательными портами. Можно узнать, какое последовательное устройство оболочка использует путем выполнения ps -p $$ (если это не делает, использовать man узнать, как включать столбец TTY в Ваш ps вывод).

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

2
27.01.2020, 20:05

Поскольку я оказывался здесь как минимум дважды, я реализовал решение:

https://github.com/walles/shellprof

Он запускает ваш скрипт, прозрачно синхронизирует все напечатанные строки и в конце выводит список 10 первых строк, которые были на экране дольше всего:

~/s/shellprof (master|✔) $./shellprof./testcase.sh
quick
slow
quick

Timings for printed lines:
1.01s: slow
0.00s: <<<PROGRAM START>>>
0.00s: quick
0.00s: quick
~/s/shellprof (master|✔) $
1
27.01.2020, 20:05

Теги

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