链依赖的bash命令

时间:2015-03-19 03:20:03

标签: bash postgresql shell command-line

我正在尝试将两个命令链接在一起:

  • 我开始发布postgres的第一个
  • 我运行命令的第二个用于postgres(在这种情况下是一个基准)

据我所知,'||',';'和'& /&&'和'运算符都要求第一个命令以某种方式终止或退出。对于已启动的服务器,情况并非如此,因此我不确定如何继续。我无法完全并行运行这两个,因为必须启动服务器。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我会在单个 bash 脚本中推荐以下内容:

  1. 通过/etc/init.d/postgresql start或类似
  2. 之类的命令启动 Postgres 服务器
  3. 睡眠一段时间,让服务器有时间启动;也许一两分钟
  4. 然后运行连接到服务器的psql命令来测试它的up-ness
  5. 通过&&将该命令与您的基准测试结合在一起,因此仅在psql命令完成时才会完成(取决于psql的确切返回码,您可能需要检查从命令输出而不是返回代码)。通过psql运行的命令最好是一个简单的查询,它连接到服务器并返回一个可以交叉检查的简单值。
  6. 根据OP的评论进行编辑:

    这取决于你想要的基准。如果您只想在服务器启动后对命令进行基准测试,并且不希望每次都重新启动服务器,那么我会调整代码以在单独的块中运行psql up-ness测试,开始服务器如果没有启动,然后无条件地运行基准测试命令。

    如果你确实想每次启动服务器(以测试冷启动性能或类似),那么我会在基准测试命令之后添加另一个命令来关闭服务器,然后睡眠,重新运行用于检查up-ness的测试命令(此时不需要up-ness)。

    在其他情况下,您应该能够多次运行脚本。

    稍微搁置一下:如果您的测试是破坏性的(也就是说,它写入数据库),您可能需要考虑转储“干净”的副本数据库 - 即处于预测试状态的数据库 - 然后创建一个与原始数据库名称不同的新数据库,在每次运行脚本时使用该转储,事先将其删除。