Самый простой (лучший?) Способ сделать это в bash - просто вызвать date
и вывести его время в секундах.Сценарий timer.sh
будет вызывать ваш исполняемый файл (randbegend.sh
для моих целей тестирования), а затем искать строки BEGIN и END, чтобы инициировать вызов на текущий момент.Как только ваш исполняемый файл завершит работу, timer.sh
рассчитает и отобразит дельту времени в секундах.
timer.sh
#!/bin/bash
while read line; do
if [[ "$line" == "BEGIN" ]]; then
t1=$(date "+%s")
echo t1=$t1
elif [[ "$line" == "END" ]]; then
t2=$(date "+%s")
echo t2=$t2
fi
done < <(./randbegend.sh) # Change this to call your executable
echo "delta = $((t2 - t1)) seconds"
randbegend.sh
#!/bin/bash
sleep $((RANDOM % 5))
echo BEGIN
sleep $((RANDOM % 10))
echo END
Вывод
$ ./timer.sh
t1=1292451820
t2=1292451825
delta = 5 seconds
$ ./timer.sh
t1=1292451886
t2=1292451889
delta = 3 seconds
$ ./timer.sh
t1=1292451896
t2=1292451903
delta = 7 seconds