Когда бывает надо померить, с какой скоростью исполняется скрипт, не всегда легко это измерить командой time. Например, когда один скрипт вызывает другой, тот вызывает третий и т.д., причем результат их работы невозможно воспроизвести, если запускать их по одиночке.
Скрипт CLOCKIT решает задачу мониторинга скриптов радикально.
Вызов
clockit myscript1.sh myscript2.sh myscript3.sh
добавляет в каждый из файлов код, который вычисляет время ( в наносекундах) исполнения данного файла (до конца или/и до выхода exit или exec). Длительность исполнения файла дописывается в таблицу в файл /tmp/.clockit.txt.
Пример использования:
find /etc/init.d -print0 | xargs -0 clockit -f #Устраиваем мониторинг времени исполнения каждого файла в /etc/rc.d
reboot #Перезагружаемся
more /tmp/clockit.txt #Просматриваем таблицу времени исполнения файлов
find /etc/init.d -print0 | xargs -0 clockit -c #Очищаем файлы от кода, вставленного CLOCKIT.
Результат работы примера:
/tmp/clockit.txt*:/etc/init.d/10rc.acpi 416675093 exit 0
/etc/init.d/10rc.acpi 438857941
/etc/init.d/20rc.pcmcia 54706872
/etc/init.d/30-dbus 156111329
/etc/init.d/30-dbus~ 32113495
/etc/init.d/30dbus_hal 32154002
/etc/init.d/30dbus_hal~ 1150377916
/etc/init.d/35dbus_hal 37910881
-------------------------------------------
/etc/init.d/Allusbserial 4417517 -h /dev/modem ]
/etc/init.d/_slmodemusb 2407878 -h /dev/modem ]
/etc/init.d/_slmodemusb 7905783 ! start ]
/etc/init.d/slmodem 7992038 -h /dev/modem ]
/etc/init.d/slmodem 34011664 ! start ]
/etc/init.d/~slmodemsnd 10211971 -h /dev/modem ]
/etc/init.d/~slmodemsnd 26991409 ! start ]
-----------------------------------------------------------
/etc/init.d/40-bluetooth 10824486 /usr/libexec/obexd --ftp --opp -r /root/bluetooth-share -n
-----------------------------------------------------------
/etc/init.d/40-bluetooth 18189551
/etc/init.d/50-Frisbee 176110700
/etc/init.d/60-dhcpcd 288750116089
/etc/init.d/agrsm -288810627540
/etc/init.d/alsa 254093799
/etc/init.d/cups 24669647 exec_prefix=/usr
/etc/init.d/cups 129624388
/etc/init.d/loadsfs 1531326582