как установить таймер для каждого запускаемого скрипта - PullRequest
0 голосов
/ 19 декабря 2018

Дорогой друг и коллеги

приятно быть здесь, в стеке, переполнен лучшим классным сайтом

В / tmp / scripts у нас есть около 128 сценариев, которые выполняют множество тестов

Как

verify_dns.sh
verify_ip.sh
verify_HW.sh

И так далее

мы решили запустить все скрипты в текущей папке - / tmp / scfipt со следующим кодом

script_name=` find /tmp/scripts  -maxdepth 1  -type f -name "verify_*"   -exec basename {} \; `

for i in $script_name
do
  echo running the script - $i
  /tmp/scripts/$i
done

Итак выводимВот как это

running the script - verify_dns.sh
running the script - verify_ip.sh
.
.

Что мы хотим добавить - это возможность печатать также время выполнения скрипта

Как в следующем примере

running the script - verify_dns.sh   - 16.3 Sec
running the script - verify_ip.sh    - 2.5 Sec
.
.

Мой вопросКак мы можем добавить эту возможность в моем коде?

Примечание - версия ОС - это redhat 7.2

Ответы [ 3 ]

0 голосов
/ 19 декабря 2018

Вы можете использовать команду time, чтобы сказать вам, сколько времени потребовалось каждому:

TIMEFORMAT="%E"
for i in $script_name
do
  echo -en "running the script - $i\t - "
  exec 3>&1 4>&2
  var=$( { time /tmp/scripts/$i 1>&3 2>&4; } 2>&1)  # Captures time only
  exec 3>&- 4>&-

  echo "$var Sec"
done

Это работает независимо от того, производят ли ваши скрипты какой-либо вывод / stderr.Смотрите эту ссылку, чтобы получить только выходные данные времени: получить значения из команды 'time' через скрипт bash

0 голосов
/ 19 декабря 2018

Хотя вывод не помещается в одну строку, это может удовлетворить ваши потребности.

for i in $script_name
do { set -x;
     time "$i";
   } 2>&1 | grep -Ev '^(user|sys|$)'
done
0 голосов
/ 19 декабря 2018

для вычисления секунд вы можете использовать

SECONDS=0 ; 
your_bash_script ; 
echo $SECONDS

для более точного вычисления

start=$(date +'%s%N') 
your_shell_script.sh
echo "It took $((($(date +'%s%N') - $start)/100000)) miliseconds"

для внутренней функции времени

time your_shell_script.sh

Редактировать: примерпредусмотрено для OP

for i in $script_name
do
  echo running the script - $i
  start=$(date +'%s%N')
  /tmp/scripts/$i
  echo "It took $((($(date +'%s%N') - $start)/100000)) miliseconds"
done

for i in $script_name
do
  echo running the script - $i
  time /tmp/scripts/$i
done
...