Как выйти из интерпретатора, который я должен запустить с оболочки?

Я использую R с kdb +/q. Для доступа к нашим данным в kdb должно быть выполнение q процесс в фоновом режиме на некотором порте. То, что мы обычно делаем, выполняется команда q -p 5000 & для инициализации процесса q и затем мы выходим из q интерпретатора. Проблема, с которой мы сталкиваемся, состоит в том, что мы не можем программно уничтожить и запустить процессы q. Например, мы иногда должны сбрасывать соединение, таким образом, мы работали бы killall -9 q и затем введите команду q -p 5000 & и затем введите \\ выходить из q интерпретатора.

Но попытка передать эти системные команды через R заканчивает тем, что бросила все виды ошибок. Попытаться запустить процесс q, не будучи должен вручную ввести \\ для существования q я попробовал printf '\\\\' | q -p 5000 & (и несколько вариантов этой команды), но у меня не было удачи.

0
задан 27 November 2019 в 00:35

1 ответ

https://code.kx.com/v2/kb/daemon/

Это работает. В R я звоню:

system("nohup q -p 5000 < /dev/null > /tmp/stdoe 2>&1&")
Sys.sleep(3)
kdb_conn <- rkdb::open_connection('localhost', 5000)
0
ответ дан 21 December 2019 в 23:48

Другие вопросы по тегам:

Похожие вопросы: