¿Qué significa “&” al final de un comando de Linux?

Soy un administrador del sistema y se me ha pedido que ejecute un script de Linux para limpiar el sistema.

El comando es este:

perl script.pl > output.log & 

entonces este comando termina con un signo & , ¿hay algún significado especial?

Tengo conocimiento básico del caparazón, pero nunca había visto esto antes.

El & hace que el comando se ejecute en segundo plano.

De man bash :

Si el operador de control finaliza un comando, el shell ejecuta el comando en segundo plano en una subcadena. El shell no espera a que el comando finalice, y el estado de retorno es 0.

Además, puede usar el signo “&” para ejecutar muchos procesos a través de una (1) conexión ssh para mantener un número mínimo de terminales. Por ejemplo, tengo un proceso que escucha mensajes para extraer archivos, el segundo proceso escucha mensajes para cargar archivos: con el “&” puedo ejecutar ambos servicios en un terminal, a través de una sola conexión ssh a mi servidor .

***** ¡Me acabo de dar cuenta de que estos procesos que se ejecutan a través del “&” también “permanecerán vivos” después de que se cierre la sesión de ssh! bastante ordenado y útil si se interrumpe su conexión al servidor **

Cuando no se les dice lo contrario, los comandos toman el primer plano. Solo tiene un proceso “en primer plano” ejecutándose en una sola sesión de shell. El símbolo & ordena a los comandos que se ejecuten en un proceso en segundo plano y regresa inmediatamente a la línea de comando para obtener comandos adicionales.

 sh my_script.sh & 

Un proceso de fondo no permanecerá 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 larga ejecución o se ejecuta indefinidamente (es decir: microservicio), necesita prpendar con nohup para que siga funcionando después de desconectarse de la sesión:

 nohup sh my_script.sh & 

EDITAR: Parece que hay un área gris con respecto al cierre de procesos en segundo plano cuando & se utiliza. Solo tenga en cuenta que el shell puede cerrar su proceso dependiendo de su sistema operativo y las configuraciones locales (particularmente en CENTOS / RHEL): https://serverfault.com/a/117157 .