多进程q的启动脚本



我正在尝试用多个进程启动kdb,以便与kdb开发人员一起编写脚本。我理解所设置的流程需要在主流程之外进行。

我试图用.bashrc中的一个函数来实现这一点,该函数创建了7个实例,最多需要8个进程。然后我和开发人员一起开始最后一个过程。当我这样做并尝试连接时,我的操作系统会通知开发人员连接被拒绝。你能建议在KDB中启动8个进程与IPC一起使用的正确方法吗?这是我在.bashrc:中的多进程启动函数

mq() {
echo "Spawning 7 q processes";
q -s -8 -p 20001;
q -s -8 -p 20002;
q -s -8 -p 20003;
q -s -8 -p 20004;
q -s -8 -p 20005;
q -s -8 -p 20006;
q -s -8 -p 20007;
}

这是.bashrc中启动开发人员的代码:

# Assumes user name is claude and opens Q with 8 threads. (to build separate processes use a negative number) 
alias q='rlwrap -r q -s -8'
# Developer set to open with 8 threads. (to build separate processes use a negative number)
alias developer='source /pathToDir/developer/config/config.profile; rlwrap -r q /pathToDir/developer/launcher.q_'

为了启动这一切,我打开一个端子并键入mq,然后打开另一个端子,键入developer在开发人员中,我为每个进程分配一个句柄,如下所示:{hopen("::",string[20000+x])}each 1+til 7然后系统告诉我连接被拒绝。

我该怎么做?

谢谢和问候,

我认为您应该使用&当在shell脚本中启动多个q进程时:

mq() {
echo "Spawning 7 q processes";
q -s -8 -p 20001 &
q -s -8 -p 20002 &
q -s -8 -p 20003 &
q -s -8 -p 20004 &
q -s -8 -p 20005 &
q -s -8 -p 20006 &
q -s -8 -p 20007 &
}
mq

没有&,一次只打开一个进程。它对我有效:./mq.sh

bchen@homer:~$ ./mq.sh 
Spawning 7 q processes
q)q)q)q)q)q)

在q会话中:

q){hopen("::",string[20000+x])}each 1+til 7
4 5 6 7 8 9 10i

要连接到q进程,应该使用hopen。在q会话中:

q){hopen("::",string[20000+x])}each 1+til 7
6 7 8 9 10 11 12i

它返回每个进程的句柄。我们可以利用这些句柄为每个进程发送命令。

最新更新