Come posso eseguire "apt-get install" in background?


17

Quando provo ad installare un pacchetto, ad esempio nsnake , con il comando sudo apt-get install nsnake &, il processo si interrompe immediatamente. Posso portarlo in primo piano e inserire la mia password sudo, metterla in pausa (con Ctrl- Z) e inviarla di nuovo in background. Ma poi la shell metterà immediatamente in pausa il processo, ad es.

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

È possibile installare pacchetti in background? Potrei voler fare questo mentre installo pacchetti di grandi dimensioni su un computer in cui sto SSH.

Risposte:


30

Si certo.

Esegui il tuo apt-getcomando con cose fantasiose intorno ad esso

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

Spiegazione parte:

  • La sudo bash -cparte genera un nuovo bashprocesso e viene eseguita apt-get -y install guake >/dev/null 2>&1 & disownall'interno di quella nuova shell.

  • Questi comandi vengono quindi eseguiti all'interno della nuova subshell:

    • apt-get -y install guake: Il comando apt-get principale che si desidera eseguire.

      • >/dev/null 2>&1 pipe stdout e stderr su / dev / null.
    • & disown rinnega il lavoro precedente ed esce dalla subshell.

È "sì |" necessario quando si utilizza l'opzione -y?
user31389,

@ user31389: non rigorosamente, ma può essere utile se un pacchetto ha ulteriori richieste durante l'installazione.
Kiri,

Sarebbe davvero bello capire perché questo funziona (e perché è necessario).
Katriel,

@katriel: non è così facile da spiegare. Ho tentato una spiegazione nella mia risposta, però.
Kiri,

1
@katriel: è perché Ctrl + Z mette in pausa il comando, nel senso che è in pausa (temporaneamente interrotto).
Kiri,

17

Mi piace sempre usare lo schermo per eseguire programmi in background.


2
+1 per lo schermo. È facile da usare e ottimo per i programmi in background a cui vuoi accedere di volta in volta, come un client irc o come sostituto di più connessioni ssh quando è necessario accedere rapidamente a una serie di percorsi o file ripetutamente
Pichan,

4
Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
blade19899,

1
preferisco tmux allo schermo.
Michael,

9

Aggiungi la e commerciale &per eseguire qualsiasi programma e torna al prompt mentre il programma è in esecuzione, ad esempio

sudo apt-get -y install nsnake &

Tuttavia, è possibile che vengano visualizzati periodicamente determinati eventi e notifiche nella shell. Per nascondere questi eventi, inoltrarli a STDOUT

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

1
Gli eventi erano il problema. La soluzione sembra essere di inoltrarli a STDOUT.
Katriel,

-1

È una soluzione alternativa, ma prima esegui qualsiasi cosa con sudo, ad es sudo ls. La tua autorizzazione sudo verrà ricordata per un po '. Quindi puoi semplicemente eseguire sudo apt-get -y install nsnake &e non ti verrà chiesta una password una seconda volta (a meno che non sia trascorso un po 'di tempo e l'autorizzazione sia scaduta).


Devi ancora digitare y al prompt, cosa che il tuo comandante non ti lascerà fare.
Kiri,

@ minerz029 Oh, giusto. Fisso.
user31389,

Sono abbastanza sicuro che né l'autorizzazione sudo né il prompt "Y / n" possano interferire, dal momento che non devo farlo neanche se porto il lavoro in primo piano.
Katriel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.