Wie kann ich "apt-get install" im Hintergrund ausführen?


17

Wenn ich versuche, ein Paket, zum Beispiel nsnake , mit dem Befehl zu installieren, sudo apt-get install nsnake &stoppt der Prozess sofort. Ich kann es in den Vordergrund bringen und mein sudo-Passwort eingeben, es anhalten (mit Ctrl- Z) und es wieder in den Hintergrund zurückschicken. Aber dann wird die Shell den Prozess sofort anhalten, zB

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

Ist es möglich, Pakete im Hintergrund zu installieren? Möglicherweise möchte ich dies tun, während ich große Pakete auf einem Computer installiere, auf dem ich SSH ausführe.

Antworten:


30

Ja sicher.

Führen Sie Ihren apt-getBefehl mit ausgefallenen Dingen aus

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

Teil erklärung:

  • Das sudo bash -cTeil erzeugt einen neuen bashProzess und wird apt-get -y install guake >/dev/null 2>&1 & disownin dieser neuen Shell ausgeführt.

  • Diese Befehle werden dann in der neuen Subshell ausgeführt:

    • apt-get -y install guake: Der Hauptbefehl apt-get, den Sie ausführen möchten.

      • >/dev/null 2>&1 leitet stdout und stderr nach / dev / null.
    • & disown Verweigert den vorherigen Job und beendet die Subshell.

Ist "ja |" benötigt, wenn Sie den Schalter -y verwenden?
— user31389

@ user31389: Nicht unbedingt, aber es kann hilfreich sein, wenn ein Paket während der Installation weitere Eingabeaufforderungen enthält.
— kiri

Wäre wirklich nett zu verstehen, warum das funktioniert (und warum es notwendig ist).
— Katriel

@katriel: Es ist nicht so einfach zu erklären. Ich habe jedoch versucht, eine Erklärung in meiner Antwort zu finden.
— Kiri

1
@katriel: Es ist , weil Sie Strg + Z pausiert den Befehl, dh es angehalten wird (vorübergehend gestoppt).
— Kiri

17

Ich benutze immer gerne den Bildschirm , um Programme im Hintergrund auszuführen.


2
+1 für Bildschirm. Es ist einfach zu bedienen und ideal für Hintergrund Programme , die Sie von Zeit zu Zeit zugreifen möchten, wie ein IRC - Client oder als Ersatz für mehrere SSH - Verbindungen , wenn Sie benötigen , um schnell Zugriff auf eine Reihe von Pfaden oder Dateien wiederholt
— Pichan

4
Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
— Blade19899

1
ich ziehe tmux dem screen vor.
— Michael

9

Fügen Sie das kaufmännische Und hinzu &, um ein Programm auszuführen , und kehren Sie zur Eingabeaufforderung zurück, während das Programm ausgeführt wird, z

sudo apt-get -y install nsnake &

Es kann jedoch vorkommen, dass bestimmte Ereignisse und Benachrichtigungen regelmäßig in der Shell angezeigt werden. Um diese Ereignisse auszublenden, leiten Sie sie an STDOUT weiter

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

1
Die Ereignisse waren das Problem. Die Lösung scheint darin zu bestehen, sie an STDOUT weiterzuleiten.
— Katriel

-1

Es ist eine Problemumgehung, aber führen Sie zuerst etwas mit sudo aus, z sudo ls. Ihre sudo-Berechtigung wird für eine Weile gespeichert. Dann können Sie einfach loslegen sudo apt-get -y install nsnake &und werden nicht zum zweiten Mal nach einem Passwort gefragt (es sei denn, es ist einige Zeit vergangen und die Autorisierung ist abgelaufen).


Sie müssen an der Eingabeaufforderung noch y eingeben, was Ihr Commant nicht zulässt.
— kiri

@ minerz029 Oh, richtig. Fest.
— user31389

Ich bin mir ziemlich sicher, dass weder die sudo-Autorisierung noch die Eingabeaufforderung "J / N" stören, da ich auch nichts tun muss, wenn ich den Job in den Vordergrund bringe.
— Katriel
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.