2014-10-06 21 views
11

Hem Mac'de hem de Ubuntu'da birçok seçeneği denedim.Rserve'i incelikle nasıl kapatabilirim?

http://cran.r-project.org/web/packages/RSclient/RSclient.pdf

http://cran.r-project.org/web/packages/Rserve/Rserve.pdf

Bir açma/kapama için doğru iş akışı ne olduğunu bilemiyorum: Ben Rserve ve RSclient paketleri Rserve belgelerine

http://rforge.net/Rserve/doc.html 

ve okumak Rserve içinde bağlantı ve Rserve 'incelikle' kapatmak için.

Örneğin, Ubuntu'da, R kaynağını ./config --enable-R-shlib (Rserve belgelerini izleyerek) ile yükledim ve ayrıca /etc/Rserve.conf dosyasında 'control enable' satırını ekledim. Ben, ancak, bağlantı kapatabilir

library(Rserve) 
library(RSclient) 
Rserve() 
c<-RS.connect() 
C## this is an Rserve QAP1 connection 

## Trying to shutdown the server 
RSshutdown(c) 
Error in writeBin(as.integer....): invalid connection 

RS.server.shutdown(c) 
Error in RS.server.shutdown(c): command failed with satus code 0x4e: no control line present (control commands disabled or server shutdown) 

: Ubuntu terminalde

bağlantı kapatıldıktan sonra

RS.close(c) 
>NULL 
C## Closed Rserve connection 

, aynı zamanda, aynı zamanda bağımsız değişken 'c' denenmiş seçenekleri (çalıştı , bağlantı) kapalı olsa bile:

Yani
RS.server.shutdown() 
RSshutdown() 

, sorularım şunlardır:

Rserve'i incelikle nasıl kapatabilirim?

2- Rserve RSclient olmadan kullanılabilir mi?

Ben de

How to Shutdown Rserve(), running in DEBUG

baktı ama soru ayıklama modunu belirtir ve ayrıca henüz çözülememiştir. (Kapatma işleminin hata ayıklama modunda çalışıp çalışmadığını sorgulamak/yorumlamak için yeterli saygınlığım yok). çok

how to connect to Rserve with an R client

teşekkür:

Ayrıca bakar!

cevap

15

Rserve ve RSclient paketlerini yükleyin, ardından örneklere bağlayın. Onlar Hadi onları kapatmaya izin ver ...

> system('tasklist /FI "IMAGENAME eq Rserve.exe"') 
> system('tasklist /FI "IMAGENAME eq Rserve_d.exe"') 

Image Name      PID Session Name  Session# Mem Usage 
========================= ======== ================ =========== ============ 
Rserve.exe     8600 Console     1  39,312 K 
Rserve_d.exe     12652 Console     1  39,324 K 

çalıştırıyorsanız gibi

> library(Rserve) 
> library(RSclient) 

> Rserve(port = 6311, debug = FALSE) 
> Rserve(port = 6312, debug = TRUE) 

Starting Rserve... 
"C:\..\Rserve.exe" --RS-port 6311 
Starting Rserve... 
"C:\..\Rserve_d.exe" --RS-port 6312 

> rsc <- RSconnect(port = 6311) 
> rscd <- RSconnect(port = 6312) 

görünüyor.

> RSshutdown(rsc) 
> RSshutdown(rscd) 

Ve gittiler ...

> system('tasklist /FI "IMAGENAME eq Rserve.exe"') 
> system('tasklist /FI "IMAGENAME eq Rserve_d.exe"') 

INFO: No tasks are running which match the specified criteria. 

Rserve args ve/veya bir yapılandırma komut dosyası ile başlatarak RSclient w/o kullanılabilir. Sonra başka bir programdan (Tableau gibi) veya kendi kodunuzla bağlayabilirsiniz.RSclient bu bir RServe örnek kapatmak istiyorsanız, system fonksiyonunu kullanabilirsiniz :) yardımcı bir Windows sisteminde

+0

Teşekkür ederiz! Yani, eğer doğru bir şekilde anlarsam, bir R işlemini bir Rserve örneğiyle birleştirmek için, RSclient'i kullanmalı mıyım? Ayrıca Rserve'de "args" komutunu belirtmem gerekiyordu (aksi halde önemli bir hata alıyorum) ve debug = TRUE kullanırken komut satırı beklemeye devam ediyor ve "Hata: R oturumuyla bağlantı kurulamıyor" ile bitiyor. Yani, bir mac kullanarak, sadece debug = F seçeneği çalışıyor gibi görünüyor ve ben sistem ('ps aux | grep Rserve') kullanıyorum [bu iki farklı ID ile 2 bağlantıyı açar ..]. Çok teşekkür ederim!! – user3570398

+0

Bu, Rserve için harika çalışır (bağlantı noktası = 6311, debug = FALSE, args = "- no-save"). Teşekkür ederim! – user3570398

4

R.

örneğinden Rserve için

Umut komutları/veri aktarmak için bir yol sağlar kapatmak için R. Örneğin R yılında: doğru olduğunu PID ile RServe örneği kapalı varsa

library(Rserve) 
Rserve() # run without any arguments or ports specified 
system('tasklist /FI "IMAGENAME eq Rserve.exe"') # run this to see RServe instances and their PIDs 
system('TASKKILL /PID {yourPID} /F') # run this to kill off the RServe instance with your selected PID 

aşağıdaki mesaj görüntülenir:

SUCCESS: The process with PID xxxx has been terminated.

kontrol edebilirsiniz RServe örneği girerek kapanmış durumda

system('tasklist /FI "IMAGENAME eq Rserve.exe"')

tekrar. Artık çalışan hiçbir RServe durumlar vardır varsa, mesaj this related question görülebilir bu konuda

INFO: No tasks are running which match the specified criteria.

Daha yardım ve bilgi alacak.

Daha önceki bir yanıtta sözü edilen 'RSClient' yaklaşımının daha düzenli olduğunu ve bundan daha kolay olduğunu, ancak nasıl durduracağını bilmeden RServe'u başlatanlar için ileri sürdüğümü unutmayın.

İlgili konular