Además, puede usar el signo "&" para ejecutar muchos procesos a través de una (1) conexión ssh para mantener una cantidad mínima de terminales. Por ejemplo, tengo un proceso que escucha mensajes para extraer archivos, el segundo proceso escucha mensajes para cargar archivos:usando "&" puedo ejecutar ambos servicios en una terminal, a través de una única conexión ssh a mi servidor .
Estos procesos que se ejecutan a través de "&" también "permanecerán vivos" después de que se cierre la sesión ssh. Bastante limpio y útil si se interrumpe la conexión ssh al servidor y no se utilizó ningún multiplexor de terminal (pantalla, tmux, byobu).
Cuando no se indica lo contrario, los comandos toman el primer plano. Solo tiene un proceso de "primer plano" ejecutándose en una sola sesión de shell. El símbolo &indica que los comandos se ejecuten en un proceso en segundo plano e inmediatamente regresa a la línea de comandos para comandos adicionales.
sh my_script.sh &
Un proceso en segundo plano no mantenerse vivo después de que se cierre la sesión de shell. SIGHUP finaliza todos los procesos en ejecución. Por defecto de todos modos. Si su comando es de ejecución prolongada o se ejecuta indefinidamente (es decir, microservicio), debe agregarlo con nohup para que siga ejecutándose después de desconectarse de la sesión:
nohup sh my_script.sh &
EDITAR: Parece haber un área gris con respecto al cierre de procesos en segundo plano cuando se usa &. Solo tenga en cuenta que el shell puede cierre su proceso dependiendo de su sistema operativo y configuraciones locales (particularmente en CENTOS/RHEL):https://serverfault.com/a/117157.
El &
hace que el comando se ejecute en segundo plano.
Desde man bash
:
Si un comando es terminado por el operador de control & , el shell ejecuta el comando en segundo plano en un subshell. El shell no espera a que finalice el comando y el estado de retorno es 0.