【问题标题】:kdb+ - how to start process without blocking the terminal in linuxkdb+ - 如何在不阻塞 linux 终端的情况下启动进程
【发布时间】:2019-03-06 15:18:22
【问题描述】:

我正在尝试在 kdb+(TP, RDB, HDB) 的 linux 上运行几个进程

例如

q tick.q sym /mnt/disks/disk1/OnDiskDB/ -p 5000

我的问题是我必须保持终端打开以保持 q 进程运行

以下是我的步骤:

我试过了:

q tick.q sym /mnt/disks/disk1/OnDiskDB/ -p 5000 &

但是我必须手动按回车键退出 q 提示(可能仍然可以),一些有关进程的信息停止,然后我关闭终端

[piotr@server tick-example]$ q tick.q sym /mnt/disks/disk1/OnDiskDB/ -p 5000 &
[1] 6627
[piotr@server tick-example]$ KDB+ 3.6 .....
q)    (enter)
[piotr@server tick-example]$   (hitting enter)
[piotr@server tick-example]$  (hitting enter)
[1]+  Stopped                 q tick.q sym mnt/disks/disk1/OnDiskDB/ -p 5000
[piotr@server tick-example]$ 

但似乎该进程仍在运行

[piotr@server tick-example]$ ps -efww | grep tick
piotr    6627  6408  0 14:55 pts/7    00:00:00 q tick.q sym /mnt/disks/disk1/OnDiskDB/ -p 5000

现在关闭终端

打开另一个终端进行验证:

[piotr@server tick-example]$q
...
q)h:hopen `::5000
'hop. OS reports: Connection refused
  [0]  h:hopen `::5000
q)\\
[piotr@server tick-example]$ ps -efww | grep tick
...
nothing

【问题讨论】:

  • 旁注,这与 kdb 无关。任何命令都可能遇到相同的问题。更多的是关于 unix shell。

标签: bash kdb


【解决方案1】:

您应该阅读更多关于后台和前台进程如何在 shell 中运行的信息。基本上,您不会通过在命令末尾添加 & 来分离,它仍然取决于您的 shell 和您的输入。

Here 是对不同情况下应该使用什么的中肯的解释。

  • 运行 command & 只需将命令发送到 bg,以便您继续使用终端
  • 如果您想让进程独立于 shell 运行,运行 nohup command & > /dev/null 是最安全的组合(将 /dev/null 替换为您想要的任何文件)。

还阅读了有关作业控制命令的信息。 TLDP 有一个good article

【讨论】:

    【解决方案2】:

    尝试添加

    nohup
    

    在你的命令之前

    【讨论】:

      【解决方案3】:

      正如其他人已经提到的,与 KDB 相比,此问题更多的是与 unix/shell 相关。以下是您可以尝试的一种解决方案。

      当您将进程发送到后台并且如果该进程仍在等待来自终端的输入,那么它将进入停止状态。在这种情况下,它不会接受来自其他 KDB 进程的请求。这就是你所看到的。

      要解决此问题,您需要更改标准输入以分离终端输入。下面的命令将输出重定向到某个日志文件,并将标准输入更改为 /dev/null。

      使用'nohup'命令,这样即使终端关闭,进程也会继续运行。

      nohup q -p 5000 >output.log </dev/null &
      

      现在您可以轻松地从其他 kdb 服务连接:

       q)h:hopen `::5000
       q)h ".z.K"
       q)3.5
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-06
        • 1970-01-01
        • 2020-08-16
        • 1970-01-01
        • 1970-01-01
        • 2017-05-02
        • 1970-01-01
        相关资源
        最近更新 更多