linux - programas - Cómo ejecutar un script de shell en segundo plano y no obtener resultados
ver ejecuciones en segundo plano linux (5)
Escribí dos guiones de shell a.sh y b.sh. En a.sh y b.sh tengo un infinito for loop e imprimen algunos resultados en el terminal. Quiero escribir otra secuencia de comandos que invoque tanto a.sh como b.sh, pero quiero que el usuario recupere el control de la terminal de inmediato, en lugar de tener la secuencia de comandos ejecutándose infinitamente y quiero ocultar la salida en la terminal.
Lo siento, es un poco tarde, pero encontré la solución ideal para los comandos de somple en los que no se desea ningún resultado estándar o de error (crédito a su debido tiempo: http://felixmilea.com/2014/12/running-bash-commands-background-properly/ )
Esto redirige la salida a nulo y mantiene la pantalla despejada:
command &>/dev/null &
Redirigir la salida a un archivo como este:
./a.sh > somefile 2>&1 &
Esto redireccionará stdout y stderr al mismo archivo. Si desea redirigir stdout y stderr a dos archivos diferentes, use esto:
./a.sh > stdoutfile 2> stderrfile &
Puede usar /dev/null
como uno o ambos archivos si no le importan los stdout y / o stderr.
Consulte la página de personal de bash para obtener detalles sobre las redirecciones.
Si están en el mismo directorio que tu script que contiene:
./a.sh > /dev/null 2>&1 &
./b.sh > /dev/null 2>&1 &
El &
al final es lo que hace que su script se ejecute en segundo plano.
La parte > /dev/null 2>&1
no es necesaria: redirige las secuencias stdout y stderr para que no tenga que verlas en la terminal, lo que puede hacer para scripts ruidosos con muchos resultados.
Use nohup
si su trabajo de fondo tarda mucho tiempo en terminar o simplemente usa SecureCRT o algo así como iniciar sesión en el servidor.
Redireccione stdout y stderr a /dev/null
para ignorar la salida.
nohup /path/to/your/script.sh > /dev/null 2>&1 &
nohup sh -x runShellScripts.sh &