我有一个运行在同一个Unix机器(Web服务器,DBMS,中间件,不同的守护进程)上的不同组件的软件。 less数组件的启动取决于以前的启动(如DBMS)的成功。 一些脚本可以在并行中运行。 有没有一种优雅的方法可以控制这种脚本依赖性,并且可以轻松使用并行机制来尽可能快地启动组件。
引导脚本的类似解决scheme由新贵http://upstart.ubuntu.com/覆盖,所以我正在寻找类似的东西,让我能够控制自己的子系统。
如果你有一种方法可以告诉服务是否可以不依靠退出代码,那么你可以用一个shell脚本使用wait来吻它,例如
#!/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
Debian在Squeeze上实现了基于依赖关系的启动 ,你应该看看它。 insserv的manpage也有一些关于LSB头文件的信息。
基本上,每个脚本都必须包含一个标题,通知insserv每个东西依赖。 重新sorting脚本,但并不确切地使引导并行,你可以阅读更多关于如何使它和其他技巧在本文开始启动过程。
当然,所有的文档都是指Debian,但我相信其他发行版可以使用一些相近的东西。