1

我一直在构建一个性能测试套件来运行服务器。现在我手动运行它,但我想自动化它。在目标服务器上,我运行一个 python 脚本,该脚本记录服务器指标并在我按 Enter 时停止。在测试机器上,我运行了一个 bash 脚本,它遍历 JMeter 测试、设置时间戳和命名日志并执行测试。

我想将它们联系在一起,以便 bash 脚本驱动整个过程,但我不确定如何最好地做到这一点。我可以通过 ssh 启动我的 python 脚本,但是如何在测试完成后停止它?如果我可以在 ssh 中做到这一点,那么我不需要弄乱现有的配置,这是一个很大的胜利。python 脚本非常简单,如果有帮助,我不介意重写它。

4

1 回答 1

1

最简单的解决方案可能是让 Python 脚本响应信号。当然,如果不需要任何清理,您可以只 SIGKILL 脚本,但是让脚本实际处理关闭请求似乎更干净。SIGHUP 可能是一个受欢迎的选择。文档在这里

您可以使用kill命令发送信号,因此只要您知道脚本的 pid,就可以通过 ssh 发送信号。这个问题的通常解决方案是在启动脚本时将 pid 放在 /var/run 中的文件中。(如果你有一个 Debian/Ubuntu 系统,你可能会发现你有这个start-stop-daemon实用程序,它可以在这里完成很多繁重的工作。)

另一种代码密集度更高的方法是在某个已知位置创建一个 fifo(命名管道),并基本上像您当前使用标准输入一样使用它:服务器等待来自管道的输入,当它得到它识别为命令的东西,它执行命令(例如“退出”)。就您的目的而言,这可能有点矫枉过正,但它的优势在于它是一个比单一的锤击更清晰的沟通渠道。

于 2012-09-22T04:43:17.420 回答