He estado usando Emacs con ESS y vagabundo para cargar archivos remotos y ejecutar procesos R remotos en computadoras HPC. Con las teclas ssh, tramp hace que sea fácil C-x C-f
encontrar el archivo y /ssh:myserver:/path/to/file
luego M-x R
iniciar una sesión R.
Sin embargo, en las computadoras HPC que usan un sistema de programación de trabajos (por ejemplo, Sun Grid Engine o Torque) hay restricciones sobre la cantidad de memoria y CPU que se pueden usar en el nodo principal, por lo que tengo que iniciar una sesión interactiva usando qsub -I
.
¿Es posible configurar vagabundo, ssh y / o Emacs para iniciar una sesión interactiva en un nodo esclavo (usando qsub -I
o equivalente) después de realizar una conexión ssh?
tramp
ess
interactive
ssh
David LeBauer
fuente
fuente
tramp-remote-shell
set toqrsh
oqlogin
es posible que pueda obtener una sesión de clúster interactiva.Respuestas:
Parece que debería extenderlo
tramp-methods
, agregando un nuevo método que es similar alsudo
método pero que usa en suqsub -I
lugar. Entonces podrá usar una ruta de vagabundo de múltiples saltos para conectarse primero al nodo principal y luego para conectarse a un nodo de cómputo.Prueba esto:
Entonces usarías un camino de vagabundo como
/ssh:myserver|qsub:myserver:/path/to/file
.Es posible que deba especificar otras opciones para pasar a qsub; No lo he usado, así que no puedo ayudarte allí. También querrá revisar las otras opciones que puede especificar en un método de vagabundo; hay un par de docenas en tramp.el.
fuente
He estado luchando por hacer lo mismo. Encontré una ruta diferente que me permitió hacer básicamente lo mismo.
Puede abrir un búfer de shell
M-x shell
desde allí y conectarse al nodo de inicio de sesión, y luego conectarse a la sesión interactiva medianteqsub -I
. Una vez que esté en la sesión interactiva, inicie una sesión R escribiendo el comandoR
. Ahí puedes hacerM-x ess-remote
. Esto generará un minibúfer que le preguntará qué programa desea ejecutar (R, S +, Stata, etc.) Una vez que seleccione R, podrá usar la sesión R en el shell remoto tal como usa ESS en la máquina local.Personalmente, abro Rscripts guardados en el nodo remoto al entrar (en una ventana separada) y trabajo con la sesión R conectada por el
ess-remote
descrito anteriormente. De esta manera, la sesión R puede interactuar directamente con los Rscripts con los que estoy trabajando. (Por ejemplo, elsource('code.R')
comando en R podrá leer el 'código. R' en el clúster de HPC, que podría haber editado. Si estuviera editando Rscripts en mi máquina local, la sesión de R de ess no remota ' No podrá leerlos a menos que los haya subido al nodo remoto cada vez).fuente