¿Cómo puedo ejecutar "apt-get install" en segundo plano?


17

Cuando intento instalar un paquete, por ejemplo nsnake , con el comando sudo apt-get install nsnake &, el proceso se detiene inmediatamente. Puedo traerlo al primer plano e ingresar mi contraseña de sudo, pausarlo (con Ctrl- Z) y enviarlo nuevamente al fondo. Pero luego el shell pausará inmediatamente el proceso, por ejemplo,

katriel@caseylaptop:~$ bg     
[2]+ sudo apt-get install nsnake &   
[2]+  Stopped                 sudo apt-get install nsnake

¿Es posible instalar paquetes en segundo plano? Es posible que desee hacer esto mientras instalo paquetes grandes en una computadora en la que estoy utilizando SSH.

Respuestas:


30

Si seguro.

Ejecute su apt-getcomando con cosas elegantes a su alrededor.

sudo bash -c 'apt-get -y install guake >/dev/null 2>&1 & disown'

Explicación de la parte:

  • La sudo bash -cparte genera un nuevo bashproceso y se ejecuta apt-get -y install guake >/dev/null 2>&1 & disowndentro de ese nuevo shell.

  • Estos comandos se ejecutan dentro de la nueva subshell:

    • apt-get -y install guake: El comando principal de apt-get que desea ejecutar.

      • >/dev/null 2>&1 canaliza stdout y stderr a / dev / null.
    • & disown rechaza el trabajo anterior y sale de la subshell.

Es "sí |" es necesario cuando usa el modificador -y?
user31389

@ user31389: No estrictamente, pero puede ayudar si un paquete tiene más avisos durante la instalación.
kiri

Sería realmente agradable entender por qué esto funciona (y por qué es necesario).
katriel

@katriel: No es tan fácil de explicar. Sin embargo, he intentado una explicación en mi respuesta.
kiri

1
@katriel: es porque Ctrl + Z detiene el comando, lo que significa que está en pausa (detenido temporalmente).
kiri

17

Siempre me gusta usar la pantalla para ejecutar programas en segundo plano.


2
+1 para pantalla. Es fácil de usar y excelente para programas en segundo plano a los que desea acceder de vez en cuando, como un cliente irc o como un sustituto de múltiples conexiones ssh cuando necesita acceder rápidamente a un conjunto de rutas o archivos repetidamente
Pichan

44
Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
blade19899

1
Prefiero tmux a la pantalla.
Michael

9

Agregue el ampersand &para ejecutar cualquier programa y vuelva al indicador mientras se ejecuta el programa, como

sudo apt-get -y install nsnake &

Sin embargo, es posible que aparezcan ciertos eventos y notificaciones periódicamente en el shell. Para ocultar estos eventos, canalícelos a STDOUT

sudo apt-get -y install nsnake >/dev/null &

1
Los eventos fueron el problema. La solución parece ser canalizarlos a STDOUT.
katriel

-1

Es una solución, pero primero ejecute cualquier cosa con sudo, por ejemplo sudo ls. Su autorización de sudo será recordada por un tiempo. Luego puede ejecutar sudo apt-get -y install nsnake &y no se le pedirá una contraseña por segunda vez (a menos que haya pasado algún tiempo y la autorización haya expirado).


Aún necesita escribir y en el indicador, que su commant no le permitirá hacer.
kiri

@ minerz029 Oh, cierto. Fijo.
user31389

Estoy bastante seguro de que ni la autorización de sudo ni el mensaje "S / n" interfieren, ya que no tengo que hacerlo tampoco si pongo el trabajo en primer plano.
katriel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.