Ya sé que presionar ctrl+z
detiene la aplicación, luego puedo enviar la aplicación a segundo plano con el bg
comando, pero eso significa que hay un breve período de tiempo en que la aplicación se detiene.
¿Cómo envío la aplicación directamente al fondo sin detenerla?
shell
command-line
background-process
jobs
trusktr
fuente
fuente
ctrl+z
seguido de ejecutar el comandobg
. ¿Hay una combinación de teclas para enviar la aplicación a un segundo plano?Respuestas:
Enviar una aplicación desde el primer plano hasta el fondo requiere la cooperación tanto del terminal como del shell. El terminal no puede hacerlo solo, porque el shell tiene que establecer el grupo de procesos en primer plano. El shell no puede hacerlo solo, porque el terminal tiene que procesar la pulsación de la tecla (el shell no está en primer plano, por lo que no puede recibir una pulsación de la tecla).
Una aproximación cercana es enviar la aplicación al fondo realmente rápido. Después de todo, una aplicación comparte el tiempo de CPU con otros y una pausa de unas pocas centésimas de segundo no debería importar. (Lo hace para aplicaciones en tiempo real, así que asegúrese de iniciarlas en segundo plano). Utilizo un enlace de shell para Ctrl+ Zque envía el último trabajo en segundo plano al fondo. De esa manera, presionar Ctrl+ Z Ctrl+ Zenvía un trabajo a un segundo plano con un tiempo de suspensión mínimo.
Aquí está mi enlace zsh, que también "en segundo plano" un comando medio tipado cuando la línea de comando no está vacía .
En inglés, para los usuarios que no son zsh en la audiencia:
Defina una función de shell que haga lo siguiente:
Vincula esta función a Ctrl+ Z.
Si solo desea el comportamiento de fondo, independientemente de si la línea de comando está vacía:
No sé si puedes hacer lo mismo en bash. Debería ser tan fácil como
bind -x '"\C-z": bg'
, excepto que bash deja el carácter tty stop en su lugar, por lo que nunca obtiene Ctrl+ Zcomo entrada.fuente
Puede realizar una tarea en segundo plano agregando un
&
después.Por ejemplo
tail -f /var/log/messages &
, la tarea se ejecutará en segundo plano inmediatamente.Como siempre, puede ver qué tareas realizó en segundo plano con el
jobs
comando.Por supuesto, esto supone que aún no ha ejecutado el comando.
fuente
ctrl+z
luego ejecutarbg
en la línea de comando para que la aplicación se ejecute en segundo plano. Pero entre presionarctrl+z
y ejecutarbg
, hay un marco de tiempo en el que la aplicación está completamente en pausa. No quiero eso ¿Cómo lo envío a segundo plano inmediatamente ?El trasfondo de un comando se realiza agregando un ampersand al comando.
Si ya se está ejecutando, su única opción es detenerlo y luego ponerlo en segundo plano.
fuente