拦截bash脚本函数/系统调用并将它们包装到自定义函数中

时间:2016-03-03 13:52:48

标签: python linux bash shell profiling

拥有一堆bash脚本,从中触发pythonbashsqlplusphp脚本,可以创建某种bash包装器,拦截每个呼叫并修改它,例如给定some_script.sh以下代码

#! /bin/bash
source $SOME_ENV/activate
python some_script.py

我想要而不是致电$: python some_script.py来电$: time python some_script.py 所以我想做的是拦截对python, php, sqlplus或其他的调用 并在每个调用中插入time命令,而不是收集时间并将其保存到某个地方,知道这个时间与哪个脚本相关。

有可能吗?

1 个答案:

答案 0 :(得分:2)

如果activate应启用此功能,则可以使用以下函数填充:

python() {
  echo python "$@" >>timelog.txt
  { time command python "$@" } 2>>timelog.txt; }
}

这不会像time内置通常正常工作那样完成。特别是,它不会时间流水线;它只会python调用自己的时间。此外,从脚本到stderr的任何输出都将重定向到日志文件。