Escribí dos scripts de shell a.sh
y b.sh
. En a.sh
y b.sh
tengo un bucle for infinito e imprimen algo de salida en la terminal. Quiero escribir otro guión que exige tanto a.sh
y b.sh
pero quiero que el usuario pueda recuperar el control de la terminal de inmediato, en lugar de tener el script se ejecute infinitamente y yo quiero ocultar la salida de la terminal.
linux
scripting
sh
background-process
Safari de Behnam
fuente
fuente
nohup /path/to/your/script.sh parameter1 > & 1 &
Si alguien conoce una mejor manera./dev/null 2>&1
si está utilizandonohup
, ya que ya agrega automáticamente todas las transmisiones STDOUT y STDERR al archivo nohup.out. Use solo:nohup /path/to/your/command &
-bash: syntax error near unexpected token '&'
Redirija la salida a un archivo como este:
Esto redirigirá tanto stdout como stderr al mismo archivo. Si desea redirigir stdout y stderr a dos archivos diferentes, use esto:
Puede utilizar
/dev/null
como uno o ambos archivos si no le importa stdout y / o stderr.Consulte la página de manual de bash para obtener detalles sobre las redirecciones.
fuente
Lo siento, esto es un poco tarde, pero encontré la solución ideal para algunos comandos en los que no desea ningún resultado estándar o de error (crédito donde se debe: http://felixmilea.com/2014/12/running-bash-commands-background -propiadamente / )
Esto redirige la salida a nula y mantiene la pantalla limpia:
fuente
Si están en el mismo directorio que su secuencia de comandos que contiene:
El
&
al final es lo que hace que su script se ejecute en segundo plano.La
> /dev/null 2>&1
parte no es necesaria: redirige los flujos stdout y stderr para que no tenga que verlos en la terminal, lo que puede hacer para scripts ruidosos con muchos resultados.fuente
Ejecutar en una subcapa para eliminar notificaciones y cerrar STDOUT y STDERR:
fuente
[1] + 54765 done <emacs>
agradecimientoSi desea ejecutar el script en Linux kickstart, debe ejecutarlo como se muestra a continuación.
fuente
fuente
-x
hacer?Estos ejemplos funcionan bien:
nohup sh prog.sh proglog.log 2> & 1 &
Para el bucle se puede utilizar así:
para i en {1..10}; hacer sh prog.sh; dormir 1; hecho prog.log 2> & 1 &
Funciona en segundo plano y no muestra ningún resultado.
fuente