Shell-Script

如何分析 shell 腳本?

  • January 25, 2022

我有幾個在 shell 腳本中執行的程序:

./myprogram1
./myprogram2
...

我知道我可以通過編輯原始碼來分析每個單獨的程序,但我想知道是否有一種方法可以通過分析腳本本身來測量執行的總時間。有沒有可以用於此目的的計時器程序?如果是這樣,它的測量精度如何?

按照 Jon Lin 的建議使用時間開始:

$ time ls test
test

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

你沒有說你的腳本在哪個 unix 上執行,但 strace 在 linux 上,在 Solaris/AIX 上 truss,我認為 hp-ux 上的 tusc 讓你了解很多關於程序在做什麼的知識。我喜歡 strace 的 -c 選項來得到一個很好的總結:

]$ 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

另請注意,附加這些跟踪類型的程序可能會降低程序的速度。

引用自:https://unix.stackexchange.com/questions/39644