python - 启动和停止服务器脚本

标签 python bash jmeter

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

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

最佳答案

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

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

另一种方法,代码更加密集,是在某个已知位置创建一个 fifo(命名管道),并基本上像当前使用 stdin 一样使用它:服务器等待来自管道的输入,然后当它收到它识别为命令的内容时,它会执行该命令(例如“退出”)。对于您的目的来说,这可能有点过分了,但它的优点是成为比单次锤击更清晰的沟通 channel 。

关于python - 启动和停止服务器脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12537067/

相关文章:

linux - 如何获得否。与文件夹中所有文件中的字符串匹配的行数

load - jmeter 用户帐户与线程

jmeter - jMeter 摘要结果中的 org.apache.http.conn.HttpHostConnectException 错误意味着什么?

c++ - 用 C 或 C++ 扩展 Python 有什么好处?

bash - 停止回显 ^C 到终端

bash - mongodb 导出和删除文档

ant - 使用 Ant 运行 JMeter 测试计划不起作用

python - 如何使用 pythonic 方式(单行)将字符串拆分为多个模式?

python - pyodbc unicode 查询失败

java - 在 Java 中选择包