如何计时可执行文件的某个部分?

del*_*ler 3 command-line monitoring

我在互联网上环顾四周,寻找是否已经有一种方法可以对可执行文件/脚本的某个部分进行计时以查看该部分需要多长时间,但我发现的只是文件外部的更多信息。所以我想输入一行启动计时器,并在部分结束时停止计时器并向我显示经过的时间,而不是全部,而只是一部分。
例子:

  #!/bin/sh
    IPTABLES="/sbin/iptables"
    BLOCKEDIPS_XS=/root/iptables/iptables/blockxs.zone
$IPTABLES -F
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES --delete-chain
$IPTABLES -F FORWARD
$IPTABLES -F -t mangle
$IPTABLES -F -t nat
$IPTABLES -X
timer start
/bin/egrep -v "^#|^$" $BLOCKEDIPS_XS | while IFS= read -r ip
do
    # Append everything to droplist
    $IPTABLES -A droplist -i eth0 -s $ip -j LOG --log-prefix " Drop IP List blockxs "
    $IPTABLES -A droplist -i eth0 -s $ip -j DROP
done <"$BLOCKEDIPS_XS"
timer stops, shows elapsed time
Run Code Online (Sandbox Code Playgroud)

ste*_*ver 5

您可以使用命令分组来计时 bash 脚本的一部分

#!/bin/bash

echo "foo"
sleep 1

time { 
sleep 2
echo "bar"
sleep 3
}

sleep 1
echo "baz"
Run Code Online (Sandbox Code Playgroud)

前任。

$ ./somescript.sh 
foo
bar

real    0m5.006s
user    0m0.005s
sys 0m0.001s
baz
Run Code Online (Sandbox Code Playgroud)

使用 subshel​​l 分组(即用括号代替大括号)也应该有效。