![我需要从 shell 启动,如何退出解释器?](https://linux22.com/image/918187/%E6%88%91%E9%9C%80%E8%A6%81%E4%BB%8E%20shell%20%E5%90%AF%E5%8A%A8%EF%BC%8C%E5%A6%82%E4%BD%95%E9%80%80%E5%87%BA%E8%A7%A3%E9%87%8A%E5%99%A8%EF%BC%9F.png)
我正在使用带有 kdb+/q 的 R。为了访问 kdb 中的数据,需要在某个端口的后台运行一个 q 进程。我们通常会运行命令q -p 5000 &
来初始化 q 进程,然后退出 q 解释器。我们遇到的问题是,我们无法以编程方式终止和启动 q 进程。例如,我们有时需要重置连接,因此我们会运行killall -9 q
,然后键入命令q -p 5000 &
,然后键入\\
以退出 q 解释器。
但尝试通过 R 传递这些系统命令最终会引发各种错误。为了尝试启动 q 进程而无需手动输入\\
exit q,我尝试了printf '\\\\' | q -p 5000 &
(以及此命令的几个变体),但没有成功。
答案1
https://code.kx.com/v2/kb/daemon/
这有效。在 RI 中调用:
system("nohup q -p 5000 < /dev/null > /tmp/stdoe 2>&1&")
Sys.sleep(3)
kdb_conn <- rkdb::open_connection('localhost', 5000)