实现Flock前面提到进程的文件锁,实际上Run也用到了,可以试想下以下的场景。用户A执行run pt-summary,由于本地已经缓存了所以会直接运行本地的脚本。同时用户B执行run -u pt-summary,加上-u或者--update参数后Run会从远端下载并运行最新的脚本。如果不加文件锁的话,用户A的行为就不可预测了,而文件锁很好得解决了这个问题。具体使用方法如下,我们封装了以下的接口。
Run是一个命令行工具,没有复杂的CS或BS架构,只是通过解析命令行或者配置文件来下载运行相应的脚本。FlockRun使用了前面提到的进程文件锁,避免同时运行同一个脚本。同时运行同一个脚本会有什么问题呢?例如我们run pt-summary,同时另一个终端执行run -u pt-summary,这样前一个命令可能使用旧脚本也可能使用新脚本,这是我们要规避的问题。
Run是开源的脚本管理工具,官方网站http://runscripts.org,项目地址https://github.com/runscripts/run。Run可以执行任意的脚本,当然使用到Go库提供的系统调用程序。
关注时代Java