Hoy te mostraré cómo ejecutar un comando en segundo plano o en el background, de modo que no tengas que esperar a que finalice ni tengas que tener la terminal abierta para que se ejecute.
Te enseñaré cómo ejecutar un comando y dejarlo corriendo en el fondo, de ese modo puedes no depender de la terminal o ejecutar varios comandos sin esperar a que uno termine para ejecutar el siguiente.
La sintaxis básica es:
comando &
Es decir, simplemente colocas un ampersand al final. Solo que todos los mensajes que sean enviados van a aparecer en la terminal desde la cual el comando fue invocado, y no van a guardarse en ningún lugar.
Entonces si no quieres ver mensajes repentinos en la terminal, redirecciona stderr
a stdout
, y stdout
a /dev/null
así:
comando > /dev/null 2>&1 &
Vamos a dividirlo. Primero redireccionamos todo lo que imprima el comando a /dev/null
.
“lo que imprima el comando” es stdout
, que se identifica con el descriptor de archivo número 1, pero también estamos indicando que lo de stderr
(descriptor de archivo 2) se vaya a stdout
con el 2>&1
.
Finalmente el &
del final hace que el comando se ejecute en segundo plano. De este modo vas a ejecutar un comando en segundo plano y no se va a imprimir nada en la terminal.
Yo siempre prefiero guardar un registro de errores o simplemente un registro de todo lo que imprime el comando que he ejecutado. Para guardar la salida de los comandos, redirecciona la salida a un archivo en lugar de /dev/null
así:
comando > /ruta/del_archivo.log 2>&1 &
Como te dije anteriormente, yo estoy ejecutando comandos en segundo plano pero guardo lo que sea que impriman.
En mi caso tengo un archivo binario llamado servidor
, redirecciono su salida a ~/control_arcade/servidor.log
pero lo ejecuto en segundo plano y además redirecciono stderr
a stdout
.
~/control_arcade/servidor >> ~/control_arcade/servidor.log 2>&1 &
Nota: yo uso >>
en lugar de >
porque no quiero sobrescribir el contenido del archivo, quiero agregar la salida a lo existente en el archivo.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.