En este corto post sobre servidores de Linux (Ubuntu específicamente) te enseñaré a ejecutar un programa en segundo plano sin bloquear la terminal.
Como sabes, al ejecutar un programa desde la consola, la misma se bloquea y no recibe más órdenes, por lo que si nos desconectamos o queremos ejecutar otro comando debemos detener al primero.
Al usar un servidor y conectarse usando SSH esto se vuelve un problema más grave, pues si nos desconectamos tenemos que detener el programa.
Por esto es que hoy te enseñaré a ejecutar un programa por SSH (de hecho también sirve de manera física) en segundo plano o en el background.
Ejecutando programa en segundo plano
En mi caso tengo algunos programas corriendo en un servidor con Ubuntu, y debo ejecutarlos sin que bloqueen la terminal. Para hacerlo uso la siguiente sintaxis:
programa >> ubicación_log 2>&1 &
Por ejemplo, si tienes un programa llamado sistema_escolar
y quieres que los mensajes y errores queden en ~/control_escolar.log
entonces debes ejecutar lo siguiente:
./sistema_escolar >> ~/control_escolar.log 2>&1 &
Recuerda que ~
hace referencia a /home/tu_usuario
.
Detener programa
Al ejecutar el comando en segundo plano nos aparecerá el PID o Id de proceso del programa que acabamos de ejecutar, mismo que podemos detener más adelante con kill PID.
Si no guardas el PID no hay problema, lo puedes encontrar con ps
y grep
más adelante.
Siguiendo el ejemplo, si quisieras buscar el id de proceso del programa llamado sistema_escolar
debes ejecutar:
ps aux | grep sistema_escolar
Eso te daría normalmente dos líneas de salida, una del propio comando que acabas de ejecutar y otra del programa que ejecutaste anteriormente.
Una vez que tengas el id del proceso puedes detenerlo con:
kill PID
Así podemos ejecutar programas y comandos en segundo plano desde la terminal en Linux Ubuntu usando SSH o la consola.
Supongo que también funciona en otros sistemas basados en Linux, pero no lo he podido probar. Para terminar te dejo con más tutoriales de Linux.