我有一个软件,它包含不同的组件,运行在同一台 Unix 机器上(Web 服务器、DBMS、中间件、不同的守护进程)。几个组件的启动取决于前几个组件(如 DBMS)的启动成功。一些脚本可以并行运行。有没有一种优雅的方法可以控制这种脚本依赖性,并轻松使用并行化机制,使组件的启动尽可能快。
upstart 涵盖了与启动脚本类似的解决方案http://upstart.ubuntu.com/所以我正在寻找类似的东西,可以让我控制自己的子系统。
答案1
如果你有办法判断服务是否正常而不依赖于退出代码,你可以使用 wait 用 shell 脚本来 KISS 它,例如
#!/bin/bash
start_parallel_service_1 &
start_parallel_service_2 &
start_parallel_service_3 &
wait # this will wait until all startup scripts exited
check_parallel_service_1 || exit
check_parallel_service_2 || exit
check_parallel_service_3 || exit
echo all ok