我有三个初始化脚本,并且 Broker 初始化脚本运行良好,但是当我尝试运行 Consumer 初始化脚本,然后运行 Data Collector 初始化脚本时,唯一正在运行的进程是 Broker。
我使用 update-rc.d 为每个脚本将符号链接添加到运行级别,并且还更改了符号链接中的数字前缀,以尝试按正确的顺序运行脚本,但这不起作用。
我能够从终端运行脚本并且它们运行良好但它们都需要在启动时启动。
关于为什么我的其他脚本无法运行,您有什么想法吗?
另外,在我的消费者和数据收集器中,我正在运行:
su user1 -c 'java -jar foo.jar'
启动服务。
此外,Consumer Java 类会等待来自队列的消息,因此,在我为 init 脚本指定停止参数之前,Java 代码不会停止。Broker 必须先启动,然后是 Consumer,然后是 Data Collector。
添加运行级别的符号链接:
sudo update-rc.d Broker defaults 10 90
sudo update-rc.d Consumer defaults 15 85
sudo update-rc.d DataCollector defaults 20 80
答案1
我让它工作了。我将 Broker 设为后台进程,因为它会一直运行,直到我关闭计算机或使用关机参数调用脚本。我还将 Consumer 设为后台进程。
经纪人初始化脚本
su user1 -c 'qpid-server &'
消费者初始化脚本
su user1 -c 'java -jar foo.jar &'
答案2
听起来 java 命令永远无法完成,因此其余的 init 脚本无法启动。尝试以下操作:
nohup su user1 -c 'java -jar foo.jar' &
我认为您会发现其余的启动序列将会起作用。