编写shell脚本计算函数执行耗时,精确到毫秒
时间: 2023-06-20 09:09:25 浏览: 88
可以使用`date`命令和`bc`命令来计算函数执行耗时,精确到毫秒,例如:
```bash
#!/bin/bash
start=$(date +%s.%N) # 记录开始时间,精确到毫秒
# 这里写需要计算执行耗时的函数
your_function
end=$(date +%s.%N) # 记录结束时间,精确到毫秒
# 计算函数执行耗时,精确到毫秒
elapsed=$(echo "$end - $start" | bc)
echo "function took $elapsed seconds"
```
说明:
- `%s.%N`是`date`命令的格式化参数,用于输出从1970年1月1日00:00:00 UTC到当前时间的秒数和纳秒数。
- `bc`命令用于计算精确的数学表达式。在这个例子中,用`echo "$end - $start" | bc`计算出了开始时间和结束时间之间经过的秒数和纳秒数的差值。
相关问题
编写shell脚本计算函数执行耗时
可以使用`time`命令来统计一个命令或函数执行的耗时,然后在脚本中调用这个命令即可。
例如,我们编写一个函数`my_function`,然后在脚本中调用并统计它的执行耗时,代码如下:
```bash
#!/bin/bash
my_function() {
# 模拟一个耗时的操作
sleep 2
}
# 统计函数执行耗时
time my_function
```
运行脚本后,输出会包含函数执行的耗时信息,例如:
```
real 0m2.003s
user 0m0.002s
sys 0m0.001s
```
这里`real`表示实际耗时,`user`表示用户态 CPU 时间,`sys`表示内核态 CPU 时间。
如果你需要将耗时信息保存到文件中,可以使用重定向操作符`>`,例如:
```bash
#!/bin/bash
my_function() {
# 模拟一个耗时的操作
sleep 2
}
# 统计函数执行耗时并将输出保存到文件
time my_function > time.log 2>&1
```
这样,耗时信息就会被保存到`time.log`文件中。
shell脚本获取进程运行时间精确到毫秒
要获取进程运行时间精确到毫秒,可以使用Linux内置命令`ps`和`date`结合。具体实现代码如下:
```shell
#!/bin/bash
# 获取进程名
process_name="python"
# 获取进程ID
pid=$(ps -ef | grep $process_name | grep -v grep | awk '{print $2}')
if [ -n "$pid" ]; then
# 获取进程启动时间
start_time=$(ps -eo pid,lstart | grep $pid | awk '{print $2" "$3" "$4" "$5" "$6" "$7}')
# 转换为时间戳(单位:毫秒)
start_timestamp=$(date -d "$start_time" +%s%3N)
# 获取当前时间戳(单位:毫秒)
current_timestamp=$(date +%s%3N)
# 计算进程运行时间
runtime=$((current_timestamp - start_timestamp))
# 输出结果
echo "进程 $process_name 已运行 $runtime 毫秒"
else
echo "进程 $process_name 不存在"
fi
```
其中,`ps -ef`可以获取当前系统中所有正在运行的进程,`grep`和`awk`可以根据进程名获取进程ID,`ps -eo pid,lstart`可以获取进程启动时间,`date -d`可以将时间字符串转换为时间戳,`date +%s%3N`可以获取当前时间戳(单位:毫秒)。最后计算进程运行时间只需用当前时间戳减去进程启动时间戳即可,最后用`echo`语句输出进程运行时间即可。