Linux – Terminales remotas

julio 2, 2014

cathodescreenshot

Si necesitas conectarte a un servidor mediante SSH para ejecutar algún comando o servicio, simplemente abres una terminal y ejecutas

ssh user@server_address

supongamos que quiero ejecutar el servidor de aplicaciones jboss as en modo standalone

cd jboss-as-7.0.1
./bin/standalone.sh

si necesitamos ver los logs, tendríamos que abrir una nueva terminal y una nueva sesión de ssh (y volver a introducir nuestras credenciales) para ejecutar el comando

watch tail standalone/logs/server.log

si cierro la terminal, el proceso también se cierra. Existen 3 opciones para resolver esto: nohup, disown y screen.

Usualmente utilizo nohup o disown, p. ej.

./bin/standalone.sh > /dev/null & disown

o

nohup ./bin/standalone.sh &

así, cuando cierres la terminal, el servidor jboss seguirá ejecutándose.

Recientemente descubrí el comando screen y rápidamente se convirtió en mi favorito. Esto es porque además de mantener los procesos ejecutandose, aún después de cerrar la terminal, te permite ejecutar más tareas en la misma sesión.

Volvamos al ejemplo anterior. Nos conectamos mediante ssh a otro servidor

ssh user@server_addres

iniciamos una sesión de screen o volvemos a la anterior

screen -dR

ejecutamos el servidor de aplicaciones

cd jboss-as-7.0.1
./bin/standalone.sh

para poder ver los logs, basta abrir otra ventana de screen presionando “CTRL+a” y luego “c”, en esta nueva “ventana” (que en realidad es la misma) ejecutamos

watch tail standalone/logs/server.log

para volver a la ventana anterior, presionamos “CTRL+a” y luego “0” (cada ventana esta numerada del 0 a n, parecido a las terminales de linux -CTRL+F1, etc.-)

para cerrar screen, pero guardar la sesión y conservar los procesos, tecleamos “CTRL+a” y luego “d”. De esta forma la sesión de screen se guarda y sigue ejecutandose. Si luego queremos volver a esta sesión, ejecutamos de nuevo

screen -dR

y tendremos las mismas “ventanas” abiertas (standalone.sh y tail server.log) y los mismos procesos ejecutandose.

para salir de screen, presiona “CTRL+d” como en cualquier otra terminal.

Para más información lee la documentación de screen y consulta las fuentes.

Fuentes:
http://stackoverflow.com/questions/431521/run-a-command-in-a-shell-and-keep-running-the-command-when-you-close-the-session
https://library.linode.com/linux-tools/utilities/screen

Anuncios

Una respuesta to “Linux – Terminales remotas”


  1. […] Pero que pasa si necesitas que se siga ejecutando en el fondo, podemos utilizar nohup, disown o screen. […]


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: