2016-03-03 13 views
1

有一堆的bash脚本,从中pythonbashsqlplusphp脚本触发时有可能创造某种bash的包装器将拦截每次通话并修改它,例如用下面的代码给出some_script.sh拦截bash脚本功能/系统调用和他们包装成自定义函数

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

我想要的,而不是调用$: python some_script.py呼叫$: time python some_script.py 所以我想要做的是拦截来电python, php, sqlplus或任何 并在每次调用插入time命令,不是收集定时并将其保存到某处,知道这个时间与哪个脚本有关。

可能吗?

回答

2

如果activate应该启用此功能,它可以被填充功能,如:

python() { 
    echo python "[email protected]" >>timelog.txt 
    { time command python "[email protected]" } 2>>timelog.txt; } 
} 

这样可不行酷似time内建正常工作。特别是,它不会花时间管道;它只会调用python自己。此外,从脚本输出到stderr将被重定向到日志文件。

+0

考虑'printf“python”; printf“%q”“$ @”; printf“\ n”'而不是'echo'。它将适当地引用所有论点。 – Alfe