Escribí dos scripts 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.Cómo ejecutar un script de shell en segundo plano y no obtener resultados
Respuesta
Use nohup
si su trabajo de fondo tarda mucho tiempo en terminar o si simplemente usa SecureCRT o algo así, inicie sesión en el servidor.
redirigir la stdout y stderr-/dev/null
ignorar la salida.
nohup /path/to/your/script.sh > /dev/null 2>&1 &
Si están en el mismo directorio que el script que contiene:
./a.sh > /dev/null 2>&1 &
./b.sh > /dev/null 2>&1 &
El &
al final es lo que hace el script ejecutándose en segundo plano.
La parte > /dev/null 2>&1
no es necesaria - redirige las corrientes stdout y stderr para que no tenga que verlas en el terminal, lo que puede querer hacer para scripts ruidosos con muchos resultados.
gracias a todos los cuerpos. todas las respuestas fueron útiles realmente gracias. –
redirigir la salida a un archivo de la siguiente manera:
./a.sh > somefile 2>&1 &
Esto redirigirá stdout y stderr al mismo archivo. Si desea redirigir stdout y stderr en dos archivos diferentes utilizar este:
./a.sh > stdoutfile 2> stderrfile &
Puede utilizar /dev/null
como uno o ambos de los archivos si no se preocupan por la salida estándar y/o stderr.
Consulte bash manpage para obtener detalles sobre las redirecciones.
siento que es un poco tarde, pero no encontró la solución ideal para los comandos somple en el que no desea ninguna salida estándar o error (crédito donde es debido: http://felixmilea.com/2014/12/running-bash-commands-background-properly/)
Esto redirige la salida en null y mantiene la pantalla despejada:
command &>/dev/null &
Nota: el comando finalizará cuando la terminal está cerrado. – Banana
Para cualquiera que mire esto en el futuro y quiera una solución para mantener los comandos en ejecución después de que termine una sesión, sugeriría screen o tmux. Esencial ejecutar una 'sesión dentro de una sesión' que continúa después de cerrar la sesión inicial. A continuación, puede volver a conectarse a la sesión en curso si vuelve a iniciar sesión. Excelente para ejecutar copias de seguridad de rsync, por ejemplo, donde la sincronización necesita ejecutarse durante un tiempo prolongado y no desea que su sesión se ejecute. – DanteAlighieri
- 1. ¿Cómo iniciar y ejecutar un script externo en segundo plano?
- 2. ¿Cómo puedo activar un script de shell y ejecutarlo en segundo plano (asincrónico) en Ruby?
- 3. shell script y SQL resultados
- 4. php ejecutar un proceso en segundo plano
- 5. ¿Cómo obtener el segundo último argumento del script de shell?
- 6. ¿Cómo ejecutar una secuencia de comandos python en segundo plano?
- 7. Ejecutar tarea en segundo plano en JavaFX
- 8. ¿Cómo ejecutar siempre un servicio en segundo plano?
- 9. ¿Cómo ejecutar gdb contra un daemon en segundo plano?
- 10. ejecutar archivo bat en segundo plano
- 11. cómo ejecutar mi aplicación en segundo plano en iphone?
- 12. cómo ejecutar un comando en segundo plano utilizando ssh y desconectar la sesión
- 13. Cómo ejecutar una aplicación de consola .NET en segundo plano
- 14. ¿Cómo ejecutar programas de Python en segundo plano?
- 15. shell - obtener el código de salida del proceso en segundo plano
- 16. Cómo ejecutar actividad en segundo plano en Android
- 17. cómo ejecutar la aplicación en segundo plano en android?
- 18. ¿Cómo ejecutar una aplicación de Android en segundo plano?
- 19. Ruby on Rails: ¿Cómo ejecutar cosas en segundo plano?
- 20. ¿Cómo se obtiene Cloud9 IDE para ejecutar en segundo plano?
- 21. Cómo ejecutar un script de shell de Unix desde Windows
- 22. Ejecutar escucha de GPS en segundo plano en Android
- 23. ¿Cómo ejecutar un script de shell desde C en Linux?
- 24. Valor devuelto del proceso en segundo plano
- 25. Cómo ejecutar un comando de shell desde un script php
- 26. Cómo ejecutar el script de shell en R y obtener el resultado en la tabla?
- 27. ¿Cómo ejecutar el programa Java y obtener resultados en PHP?
- 28. ¿Es posible ejecutar el acelerómetro del iPhone en segundo plano?
- 29. nohup: ejecutar el proceso de PHP en segundo plano
- 30. ¿Cómo ejecutar un script de shell interactivo usando java Runtime?
Solo para agregar, a veces hay argumentos para los scripts, entonces el comando anterior devolverá ** Redirección de salida ambigua **. – sabertooth1990
Una mejor forma que encontré es usar 'nohup /path/to/your/script.sh parameter1> & 1 &' Si alguien conoce una mejor manera. – sabertooth1990
No necesita '/ dev/null 2> & 1' si está usando' nohup', ya que agrega todas las secuencias STDOUT y STDERR al archivo nohup.out automágicamente. Use simplemente: 'nohup/ruta/a/su/comando &' – leonarth