MACHINECTL(1)

BEZEICHNUNG
machinectl - Steuert den Systemd-Maschinenverwalter

ÜBERSICHT

machinectl [OPTIONEN…] {BEFEHL} [NAME…]

BESCHREIBUNG

machinectl kann zur Untersuchung und Steuerung des Zustand des Registrierungsverwalters systemd-machined.service(8) von systemd(1) für virtuelle Maschinen und Container verwandt werden.

machinectl kann zur Ausführung von Aktionen auf Maschinen und Abbildern verwandt werden. In diesem Zusammenhang werden Maschinen als folgende laufende Instanzen betrachtet:

    • Virtuelle Maschinen (VMs), die Hardware virtualisieren, um vollständige Betriebssysteminstanzen (einschließlich ihrer Kernel) in einer virtualisierten Umgebung oberhalb des Wirtsbetriebssystems auszuführen.

    • Container, die Hardware und Betriebssystemkernel mit dem Wirtsbetriebssystem gemeinsam benutzen, um eine Betriebssystem-Benutzerinstanz oberhalb des Wirtsbetriebssystems auszuführen.

    • Das Wirtsystem selbst.

Maschinen werden durch Namen identifiziert, die den gleichen Regeln wie UNIX- und DNS-Rechnernamen folgen. Details nachfolgend.

Maschinen werden von Platte oder Systemabbildern instanziiert, die häufig, aber nicht notwendigerweise, die gleichen Namen wie Maschinen, von denen sie ausgeführt werden, tragen. In diesem Zusammenhang können Abbilder Folgendes sein:

    • Verzeichnisbäume, die ein Betriebssystem enthalten, einschließlich der Verzeichnisse auf oberster Ebene wie /usr/, /etc/ usw.

    • Btrfs-Teildatenträger, die Betriebssystembäume, ähnlich zu regulären Verzeichnisbäumen enthalten.

    • Binäre »rohe« Plattenabbilddateien, die MBR- oder GPT-Partitionstabellen und Linux-Dateisysteme enthalten.

    • Ähnlicherweise Blockgeräte, die MBR- oder GPT-Partitionstabellen und Dateisysteme enthalten.

    • Der Dateisystembaum des Wirtsbetriebssystems selbst.

BEFEHLE

Die folgenden Befehle werden verstanden:

  Maschinenbefehle

list
    Listet die derzeit laufenden (online) virtuellen Maschinen und Container auf. Um startfähige Maschinenabbilder aufzuzählen, verwenden Sie list-images (siehe unten). Beachten Sie, dass dieser Befehl standardmäßig die besondere Maschine ».host« versteckt. Verwenden Sie den Schalter --all, um sie anzuzeigen.

status NAME…
    Zeigt Laufzeitstatusinformationen über eine oder mehrere virtuelle Maschinen und Container an, gefolgt von den neusten Protokolldaten aus dem Journal. Diese Funktion ist zur Darstellung menschenlesbarer Ausgabe gedacht. Falls Sie Computer-auswertbare Ausgaben benötigen, verwenden Sie stattdessen show. Beachten Sie, dass die angezeigten Protokolldaten durch den Verwalter der virtuellen Maschine oder Container gemeldet werden und häufig Konsolenausgabe aus der Maschine enthält, aber nicht notwendigerweise Journal-Inhalte der Maschine selbst.

show [NAME…]
    Zeigt die Eigenschaften einer oder mehrerer registrierter virtueller Maschinen oder Container oder des Verwalters selbst an. Falls kein Argument angegeben ist, werden die Eigenschaften des Verwalters angezeigt. Falls ein NAME angegeben ist, werden die Eigenschaften dieser virtuellen Maschine oder dieses Containers angezeigt. Standardmäßig werden leere Eigenschaften unterdrückt. Verwenden Sie --all, um diese auch anzuzeigen. Um bestimmte anzuzeigende Eigenschaften auszuwählen, verwenden Sie --property=. Dieser Befehl ist dafür gedacht, eingesetzt zu werden, wenn Computer-auswertbare Ausgabe benötigt wird und gibt nicht den gesamten Control-Gruppenbaum oder Journal-Einträge aus. Verwenden Sie status, falls Sie menschenlesbare Ausgabe benötigen.

start NAME…
    Startet einen Container mittels systemd-nspawn(1) als Systemdienst. Dies startet systemd-nspawn@.service, instanziiert für den angegebenen Maschinennamen, ähnlich der Wirkung von systemctl start auf den Dienstenamen. systemd-nspawn sucht nach einem Container-Abbild des angegebenen Namens in /var/lib/machines/ (und anderen Suchpfaden, siehe unten) und führt ihn aus. Verwenden Sie list-images (siehe unten) zur Auflistung verfügbarer, startfähiger Container-Abbilder.

    Beachten Sie, dass systemd-machined.service(8) auch mit einer Reihe von anderen Container- und VM-Verwaltern koppelt, systemd-nspawn ist nur eine Implementierung davon. Die meisten in machinectl verfügbaren Befehle können auch auf durch andere Verwalter, nicht nur systemd-nspawn, gesteuerte Container oder VMs angewandt werden. Das Starten von VMs und Container-Abbildern bei diesen Verwaltungsprogrammen benötigt angepasste Werkzeuge.

    Um auf der Befehlszeile einen Container interaktiv mit vollem Zugriff auf die Konsole des Containers zu starten, rufen Sie systemd-nspawn direkt auf. Zum Stoppen eines Containers verwenden Sie machinectl poweroff.

login [NAME]
    Öffnet eine interaktive Terminalanmeldesitzung in einem Container oder auf der lokalen Maschine. Falls ein Argument bereitgestellt wird, bezieht es sich auf die Container-Maschine, zu der verbunden werden soll. Falls keine angegeben ist oder der Container-Name als leere Zeichenkette oder der besondere Maschinenname ».host« angegeben ist (siehe unten), erfolgt die Verbindung stattdessen zum lokalen Rechner. Dies erstellt eine TTY-Verbindung zu dem angegebenen Container oder der lokalen Maschine und bittet um die Ausführung eines Getty darauf. Beachten Sie, dass dies nur für Container unterstützt wird, die systemd(1) als Init-System ausführen.

    Dieser Befehl öffnet eine vollständige Anmeldeaufforderung im Container oder der lokalen Maschine, die dann um Benutzername und Passwort bittet. Verwenden Sie shell (siehe unten) oder systemd-run(1) mit dem Schalter --machine=, um direkt einen einzelnen Befehl aufzurufen, entweder interaktiv oder im Hintergrund.

shell [[NAME@]NAME [PFAD [ARGUMENTE…]]]
    Öffnet eine interaktive Shell-Sitzung in einem Container oder der lokalen Maschine. Das erste Argument bezieht sich auf die zu verbindende Container-Maschine. Falls keine angegeben ist oder der Container-Name als leere Zeichenkette oder der besondere Maschinenname ».host« angegeben ist (siehe unten), erfolgt die Verbindung stattdessen zum lokalen Rechner. Dies funktioniert ähnlich zu login, ruft aber sofort einen Benutzerprozess auf. Dieser Befehl führt das angegebene Benutzerprogramm mit den angegebenen Argumenten oder die Standard-Shell für den Benutzer, falls kein Befehl angegeben ist, oder /bin/sh, falls keine Vorgabe-Shell gefunden wird, aus. Standardmäßig kann ein anderer Benutzer ausgewählt werden, indem --uid= verwandt oder dem Maschinennamen ein Benutzername und das Zeichen »@« vorangestellt wird. Verwenden Sie --setenv=, um Umgebungsvariablen für den ausgeführten Prozess zu setzen.

    Beachten Sie, dass machinectl shell den Exit-Code/Status des aufgerufenen Shell-Prozesses nicht weiterleitet. Verwenden Sie stattdessen systemd-run, falls diese Information benötigt wird (siehe unten).

    Der Einsatz des Befehls shell ohne Argumente (womit der aufgerufene Befehl oder die Shell auf dem lokalen Rechner ausgeführt wird) ist auf viele Arten ähnlich einer su(1)-Sitzung, isoliert aber anders als su die neue Sitzung von der ursprünglichen Sitzung, so dass kein Prozess und keine Sitzungseigenschaften gemeinsam benutzt werden und sie in einem sauberen und gut-definiertem Zustand ist. Sie wird in einer neuen Utmp-, Anmelde-, Audit-, Sicherheits- und Schlüsselbund-Sitzung nachverfolgt und wird keine Umgebungsvariablen oder Ressourcenbegrenzungen (und andere Eigenschaften) erben.

    Beachten Sie, dass anstelle des Befehls machinectl shell systemd-run(1) mit seinem Schalter --machine= verwandt werden kann, was nicht-interaktive Aktionen, detailliertere und systemnahere Konfiguration der betroffenen Unit sowie den Zugriff auf Laufzeit- und Exit-Code/Status-Informationen des aufgerufenen Shell-Prozesses ermöglicht. Verwenden Sie insbesondere den Schalter --wait von systemd-run, um Exit-Statusinformationen vom aufgerufenen Prozess weiterzuleiten. Verwenden Sie den Schalter --pty von systemd-run, um eine interaktive Shell zu erlangen, ähnlich zu machinectl shell. Im Allgemeinen wird systemd-run für Skripting-Zwecke bevorzugt. Beachten Sie allerdings, dass systemd-run höhere Privilegien als machinectl shell erlangen könnte.

enable NAME…, disable NAME…
    Aktiviert oder deaktiviert das Starten eines Containers mittels systemd-nspawn(1) als Systemdienst beim Systemstart. Dies aktiviert oder deaktiviert systemd-nspawn@.service, instanziiert für den angegebenen Maschinennamen, von der Wirkung ähnlich systemctl enable oder systemctl disable auf den Dienstenamen.

poweroff NAME…
    Schaltet einen oder mehrere Container aus. Dies wird durch Senden von SIGRTMIN+4 an den Init-Prozess des Containers einen Neustart auslösen, wodurch Systemd-kompatible Init-Systeme sauber heruntergefahren werden. Verwenden Sie stop als Alias für poweroff. Diese Aktion funktioniert bei Containern, die keine systemd(1)-kompatiblen Init-Systeme, wie Sysvinit, ausführen, nicht. Verwenden Sie das (nachfolgend beschriebene) terminate, um einen Container oder eine VM sofort zu beenden, ohne sie sauber herunterzufahren.

reboot NAME…
    Startet einen oder mehrere Container neu. Dies wird durch Senden von SIGINT an den Init-Prozess des Containers einen Neustart auslösen. Dies ist grob äquivalent zum Drücken von Strg-Alt-Entf auf einem System außerhalb eines Containers und kompatibel mit Containern mit beliebigen Systemverwaltern.

terminate NAME…
    Beendet die virtuelle Maschine oder den Container sofort, ohne ihn sauber herunterzufahren. Dies tötet alle Prozesse der virtuellen Maschine oder des Containers und gibt alle dieser Instanz zugeordneten Ressourcen frei. Verwenden Sie poweroff, um ein sauberes Herunterfahren anzufordern.

kill NAME…
    Sendet ein Signal an einen oder mehrere Prozesse der virtuellen Maschine oder des Containers. Dies bezieht sich auf Prozesse, wie sie vom Wirtsrechner gesehen werden, nicht Prozesse innerhalb der virtuellen Maschine oder des Containers. Wählen Sie die zu tötenden Prozesse mit --kill-who=. Verwenden Sie --signal= zur Auswahl des zu sendenden Signals.

bind NAME PFAD [PFAD]
    Hängt eine Datei oder ein Verzeichnis vom Wirtssystem in den angegebenen Container mit »bind« ein. Das erste Pfadargument ist die Quelldatei oder das Quellverzeichnis auf dem Wirtssystem, das zweite Pfadargument ist die Zieldatei oder der Zielpfad im Container. Wenn Letzterer fehlt, wird dafür das gleiche wie der Quellpfad auf dem Wirtssystem verwandt. Bei der Kombination mit dem Schalter --read-only wird eine nur-lesbare Bind-Einhängung erstellt. Bei der Kombination mit dem Schalter --mkdir wird vor dem Einhängen der Zielpfad zuerst erstellt. Beachten Sie, dass diese Option derzeit nur für systemd-nspawn(1)-Container unterstützt wird, und nur wenn Benutzer-Namensräume (--private-users) nicht verwandt werden. Dieser Befehl unterstützt das Bind-Einhängen von Verzeichnissen, regulären Dateien, Geräteknoten, AF_UNIX-Socket-Knoten sowie FIFOs.

copy-to NAME PFAD [PFAD]
    Kopiert Dateien oder Verzeichnisse vom Wirtssystem in einen laufenden Container. Akzeptiert einen Container-Namen, gefolgt vom Quellpfad auf dem Wirtssystem und dem Zielpfad im Container. Falls der Zielpfad fehlt, wird dafür das gleiche wie der Quellpfad verwandt.

    Falls der Rechner und der Container den gleichen Benutzer- und Gruppennamensraum benutzen, wird die Dateieigentümerschaft durch numerische Benutzer- und Gruppenkennung für die Kopie erhalten, andernfalls gehören alle Dateien und Gruppen dem Benutzer und der Gruppe root (UID/GID 0).

copy-from NAME PFAD [PFAD]
    Kopiert Dateien oder Verzeichnisse aus dem Container auf den Rechner. Akzeptiert einen Container-Namen, gefolgt von einem Quellpfad im Container und dem Zielpfad im Rechner. Falls der Zielpfad entfällt, wird er identisch zum Quellpfad verwandt.

    Falls der Rechner und der Container den gleichen Benutzer- und Gruppennamensraum benutzen, wird die Dateieigentümerschaft durch numerische Benutzer- und Gruppenkennung für die Kopie erhalten, andernfalls gehören alle Dateien und Gruppen dem Benutzer und der Gruppe root (UID/GID 0).

  Abbild-Befehle

list-images
    Zeigt eine Liste von lokal installierten Container- und VM-Abbildern. Dies zählt alle rohen Platten-Abbilder und -Containerverzeichnisse und Teildatenträger in /var/lib/machines/ (und anderen Suchpfaden, siehe unten) auf. Verwenden Sie start (siehe oben), um einen Container aus den aufgeführten Abbildern auszuführen. Beachten Sie, dass standardmäßig Container, deren Namen mit einem Punkt (».«) beginnen, nicht angezeigt werden. Geben Sie --all an, um diese auch anzuzeigen. Beachten Sie, dass das besondere Abbild ».host« immer impliziet existiert und sich auf das Abbild bezieht, von dem der Rechner selbst gestartet wurde.

image-status [NAME…]
    Zeigt knappe Statusinformationen über einen oder mehrere Container- oder VM-Abbilder an. Diese Funktion ist zur Erzeugung menschenlesbarer Ausgabe gedacht. Verwenden Sie show-image (siehe unten), um stattdessen Computer-auswertbare Ausgabe zu erstellen.

show-image [NAME…]
    Zeigt Eigenschaften von einem oder mehreren registrierten virtuellen Maschinen oder Container-Abbildern oder dem Verwalter selbst an. Falls kein Argument angegeben ist, werden die Eigenschaften des Verwalters angezeigt. Falls NAME angegeben ist, werden die Eigenschaften dieser virtuellen Maschine oder des Container-Abbilds angezeigt. Standardmäßig werden leere Eigenschaften unterdrückt. Verwenden Sie --all, um diese auch anzuzeigen. Um bestimmte Eigenschaften zur Anzeige auszuwählen, verwenden Sie --property=. Dieser Befehl ist dafür gedacht, wenn Computer-auswertbare Ausgabe benötigt wird. Verwenden Sie image-status, falls Sie formatierte, menschenlesbare Ausgabe suchen.

clone NAME NAME
    Klont einen Container- oder ein VM-Abbild. Die Argumente geben den Namen des zu klonenden und den Namen des frisch geklonten Abbildes an. Beachten Sie, dass einfache Container-Abbilder mit diesem Befehl in Btrfs-Teildatenträger-Abbilder geklont werden, falls dies das zugrundeliegende Dateisystem unterstützt. Beachten Sie, dass Klonen eines Container- oder VM-Abbildes für Dateisysteme optimiert ist, die »Kopieren-beim-Schreiben« unterstützen und für andere Dateisysteme, aufgrund von deren Beschränkungen, weniger effizient sein könnte.

    Beachten Sie, dass dieser Befehl den Rechnernamen, die Maschinenkennung und alle anderen Einstellungen, die diese Instanz identifizieren könnten, unverändert lässt. Das ursprüngliche Abbild und die geklonte Kopie werden daher beide diese Berechtigungsnachweise gemeinsam nutzen und es mag notwendig sein, diese in der Kopie manuell zu ändern.

    Wird dies mit dem Schalter --read-only kombiniert, dann wird ein nur-lesbares geklontes Abbild erstellt.

rename NAME NAME
    Benennt ein Container- oder VM-Abbild um. Die Argumente geben den Namen des umzubenennenden und den neuen Namen des Abbildes an.

read-only NAME [LOGISCH]
    Markiert ein Container- oder VM-Abbild nur-lesbar oder hebt dieses auf. Akzeptiert als Argumente einen VM- oder Container-Abbildnamen, gefolgt von einem logischen Wert. Falls der logische Wert fehlt, wird positiv impliziert, d.h. das Abbild wird als nur-lesbar markiert.

remove NAME…
    Entfernt eines oder mehrere Container- oder VM-Abbilder. Das besondere Abbild ».host«, das sich auf den Verzeichnisbaum des Rechners selbst bezieht, darf nicht entfernt werden.

set-limit [NAME] BYTE
    Setzt die maximale Größe in Byte, zu der ein bestimmtes Container- oder VM-Abbild, oder alle Abbilder auf der Platte anwachsen dürfen (Plattenkontingent). Akzeptiert entweder einen oder zwei Parameter. Der erste, optionale Parameter bezieht sich auf den Namen eines Containers oder einer VM. Falls angegeben, wird die Größenbegrenzung des angegebenen Abbilds geändert. Falls der Parameter fehlt, dann wird die Gesamtgrößenbegrenzung der Summe aller lokal gespeicherten Abbilder geändert. Das abschließende Argument gibt die Größenbegrenzung in Byte an, die üblichen Einheiten K, M, G, T können optional angehängt werden. Falls die Größenbegrenzung deaktiviert werden soll, geben Sie »-« als Größe an.

    Beachten Sie, dass die Container-bezogenen Größenbeschränkungen nur auf Btrfs-Dateisystemen unterstützt werden.

clean
    Entfernt versteckte VM- oder Container-Abbilder (oder alle). Dieser Befehl entfernt alle versteckten Maschinenabbilder aus /var/lib/machines/, d.h. solche, deren Namen mit einem Punkt beginnen. Verwenden Sie machinectl list-images --all, um eine Liste aller Maschinenabbilder zu sehen, einschließlich der versteckten.

    Bei der Kombination mit dem Schalter --all werden alle Abbilder entfernt, nicht nur die versteckten. Dieser Befehl leert effektiv /var/lib/machines/.

    Beachten Sie, dass Befehle wie machinectl pull-tar oder machinectl pull-raw normalerweise zuerst versteckte, nur-lesbare und unveränderte Maschinenabbilder aus dem heruntergeladenen Abbild erstellen, bevor sie eine schreibbare Arbeitskopie davon klonen, um mehrfaches Herunterladen zu vermeiden, falls Abbilder mehrmals verwandt werden. Verwenden Sie machinectl clean, um auf diese Art erstellte alte, versteckte Abbilder zu entfernen.

  Abbildübertragungsbefehle

pull-tar URL [NAME]
    Lädt ein .tar-Container-Abbild von der angegebenen URL herunter und macht es unter dem angegebenen lokalen Maschinennamen verfügbar. Die URL muss vom Typ »http://« oder »https://« sein und muss sich auf eine .tar-, .tar.gz-, .tar.xz- oder .tar.bz2-Archivdatei beziehen. Falls der lokale Maschinenname nicht angegeben wird, wird er aus der letzten Komponente der URL automatisch ermittelt, wobei die Endung entfernt wird.

    Das Abbild wird verifiziert, bevor es verfügbar gemacht wird, außer --verify=no ist angegeben. Die Verifizierung erfolgt entweder über eine integrierte signierte Datei mit dem Namen des Abbildes und der Endung .sha256 oder mit separaten SHA256SUMS- und SHA256SUMS.gpg-Dateien. Die Signaturdateien müssen auf dem gleichen Web-Server unter der gleichen URL wie die .tar-Datei verfügbar gemacht werden. Mit --verify=checksum wird nur die SHA256-Prüfsumme für die Datei verifiziert, basierend auf der Datei mit Endung .sha256 oder der SHA256SUMS-Datei. Mit --verify=signature wird zuerst die SHA-Prüfsumme der Datei mit der integrierten Signatur in der .sha256-Datei oder der separaten GPG-Signaturdatei SHA256SUMS.gpg verifiziert. Der öffentliche Schlüssel für diesen Verifikationsschritt muss in /usr/lib/systemd/import-pubring.gpg oder /etc/systemd/import-pubring.gpg verfügbar sein.

    Das Container-Abbild wird in einen nur-lesbaren Teildatenträger in /var/lib/machines/, der nach der angegebenen URL und seinem HTTP-etag benannt ist, heruntergeladen und gespeichert. Von diesem Teildatenträger wird dann ein schreibbarer Schnappschuss genommen, der nach dem angegebenen lokalen Namen benannt wird. Dieses Verhalten stellt sicher, dass die Erstellung mehrerer Container-Instanzen von der gleichen URL effizient erfolgt, da mehrfaches Herunterladen nicht notwendig ist. Um nur das nur-lesbare Abbild zu erstellen und die Erstellung des schreibbaren Schnappschusses zu vermeiden, geben Sie »-« als lokalen Maschinennamen an.

    Beachten Sie, dass einem nur-lesbaren Teildatenträger .tar- vorangestellt und es daher durch list-images nur angezeigt wird, wenn auch --all übergeben wird.

    Beachten Sie, dass Drücken von Strg-C während der Ausführung dieses Befehls das Herunterladen nicht abbricht. Verwenden Sie das nachfolgend beschriebene cancel-transfer.

pull-raw URL [NAME]
    Lädt ein .raw-Container- oder VM-Plattenabbild von der angegebenen URL herunter und macht ihn unter dem angegebenen lokalen Maschinennamen verfügbar. Das Container-Abbild muss entweder eine .qcow2 oder ein rohes Platten-Abbild sein, das optional als .gz, .xz oder .bz2 komprimiert sein kann. Falls der lokale Maschinenname nicht angegeben wird, wird er aus der letzten Komponente der URL automatisch ermittelt, wobei die Endung entfernt wird.

    Abbild-Überprüfung ist für rohe und Tar-Abbilder identisch (siehe oben).

    Falls das heruntergeladene Abbild im Format .qcow2 ist, dann wird es vor der Bereitstellung in eine rohe Abbilddatei konvertiert.

    Heruntergeladene Abbilder dieses Typs werden als nur-lesbare .raw-Dateien in /var/lib/machines/ abgelegt. Eine lokale, schreibbare (Referenz-gelinkte) Kopie wird dann unter dem angegebenen lokalen Maschinennamen zur Verfügung gestellt. Um die Erstellung der lokalen, schreibbaren Kopie zu überspringen, übergeben Sie »-« als lokalen Maschinennamen.

    Ähnlich dem Verhalten von pull-tar wird dem nur-lesbaren Abbild .raw- vorangestellt und damit wird es durch list-images nur angezeigt, wenn auch --all übergeben wird.

    Beachten Sie, dass Drücken von Strg-C während der Ausführung dieses Befehls das Herunterladen nicht abbricht. Verwenden Sie das nachfolgend beschriebene cancel-transfer.

import-tar DATEI [NAME], import-raw DATEI [NAME]
    Importiert ein TAR- oder RAW-Container- oder VM-Abbild und legt es unter dem angegebenen Namen in /var/lib/machines/ ab. Wird import-tar verwandt, dann sollte die als erstes Argument übergebene Datei ein Tar-Archiv sein, das gegebenenfalls mit Xz, Gzip oder Bzip2 komprimiert sein kann. Es wird dann in seinen eigenen Teildatenträger in /var/lib/machines/ abgelegt. Wird import-raw verwandt, dann sollten die Dateien qcow2- oder rohe Plattenabbilder sein, die gegebenenfalls mit Xz, Gzip oder Bzip2 komprimiert sein können. Falls das zweite Argument (der entstehende Abbildname) nicht angegeben ist, dann wird er automatisch vom Dateinamen abgeleitet. Falls der Dateiname als »-« übergeben wird, dann wird das Abbild von der Standardeingabe gelesen, das zweite Argument ist dann verpflichtend.

    Optional kann der Schalter --read-only zur Erstellung eines nur-lesbaren Container- oder VM-Abbildes verwandt werden. Beim Importieren des Abbildes erfolgt keine kryptographische Validierung.

    Ähnlich wie beim Herunterladen von Abbildern können laufende Importvorgänge mit list-transfers aufgeführt und mit cancel-transfer abgebrochen werden.

import-fs VERZEICHNIS [NAME]
    Importiert einen in einem lokalen Verzeichnis gespeicherten Container in /var/lib/machines/. Dies funktioniert ähnlich import-tar oder import-raw, aber das erste Argument ist das Quellverzeichnis. Falls unterstützt, erzeugt dieser Befehl einen Btrfs-Schnappschuss oder -Teildatenträger für das neue Abbild.

export-tar NAME [DATEI], export-raw NAME [DATEI]
    Exportiert ein TAR- oder RAW-Container- oder VM-Abbild und speichert es in der angegebenen Datei. Der erste Parameter sollte ein VM- oder Container-Abbild-Name sein. Der zweite Parameter sollte ein Dateipfad sein, in den das TAR- oder RAW-Abbild geschrieben wird. Falls der Pfad auf ».gz« endet, wird die Datei mit Gzip komprimiert, falls sie auf ».xz« endet, mit Xz und falls sie auf ».bz2« endet, mit Bzip2. Falls sie keine dieser Endungen hat, bleibt die Datei unkomprimiert. Falls das zweite Argument fehlt, wird das Abbild in die Standardausgabe geschrieben. Die Komprimierung kann mit dem Schalter --format= auch explizit ausgewählt werden. Dies ist insbesondere nützlich, wenn der zweite Parameter nicht angegeben wird.

    Ähnlich wie beim Herunterladen und Importieren von Abbildern können laufende Exportvorgänge mit list-transfers aufgeführt und mit cancel-transfer abgebrochen werden.

    Beachten Sie, dass derzeit nur Verzeichnisse und Teildatenträger-Abbilder als TAR-Abbilder und dass nur rohe Platten-Abbilder als RAW-Abbilder exportiert werden können.

list-transfers
    Zeigt eine Liste von aktiven Herunterlade-, Import- und Exportvorgängen von Container- oder VM-Abbildern.

cancel-transfer KENNUNG…
    Bricht das Herunterladen, den Im- oder Export des Container- oder VM-Abbildes mit der angegebenen Kennung ab. Um laufende Übertragungen und ihre Kennungen anzuzeigen, verwenden Sie list-transfers.

OPTIONEN

Die folgenden Optionen werden verstanden:

-p, --property=
    Bei der Anzeige von Maschinen- oder Abbildeigenschaften wird die Ausgabe auf bestimmte, durch die Argumente angegebene Eigenschaften beschränkt. Falls nicht angegeben, werden alle gesetzten Eigenschaften angezeigt. Das Argument sollte ein Eigenschaftsname, wie »Name«, sein. Falls mehr als einmal angegeben, werden alle Eigenschaften mit den angegebenen Namen angezeigt.

-a, --all
    Bei der Anzeige der Maschinen- oder Abbildeigenschaften werden alle Eigenschaften angezeigt, unabhängig davon, ob sie gesetzt sind oder nicht.

    Beim Auflisten von VM- oder Container-Abbildern werden Abbilder, deren Name mit einem Punkt (».«) beginnt, auch aufgeführt.

    Beim Bereinigen von VM- oder Container-Abbildern werden alle Abbilder, nicht nur die versteckten, entfernt.

--value
    Bei der Ausgabe der Eigenschaften mit show wird nur der Wert angezeigt, der Eigenschaftsname und das »=« wird übersprungen.

-l, --full
    Verkürzt die Prozessbaumeinträge oder die -tabelle nicht. Dies impliziert --max-addresses=full.

--kill-who=
    Wählt bei der Verwendung mit kill den zu tötenden Prozess aus. Muss entweder leader oder all sein, um auszuwählen, ob nur der Leitungsprozess der Maschine oder alle Prozesse der Maschine getötet werden sollen. Falls nicht angegeben, ist die Vorgabe all.

-s, --signal=
    Sucht bei der Verwendung mit kill das Signal aus, das an ausgewählte Prozesse gesandt wird. Muss eines der gut bekannten Signalkennungen wie SIGTERM, SIGINT oder SIGSTOP sein. Falls weggelassen, ist die Vorgabe SIGTERM.

    Der besondere Wert »help« wird alle bekannten Werte darstellen und das Programm wird sich sofort beenden; der besondere Wert »list« wird alle bekannten Werte zusammen mit ihren numerischen Signalnummern darstellen und das Programm wird sich sofort beenden.

--uid=
    Wählt bei der Verwendung mit dem Befehl shell die Benutzerkennung aus, unter der die interaktive Shell-Sitzung geöffnet werden soll. Falls das Argument des Befehls shell auch einen Benutzernamen angibt, wird diese Option ignoriert. Falls der Name nicht auf eine der Arten angegeben ist, dann wird standardmäßig »root« verwandt. Beachten Sie, dass dieser Schalter nicht für den Befehl login unterstützt wird (siehe unten).

-E NAME[=WERT], --setenv=NAME[=WERT]
    Bei der Verwendung mit dem Befehl shell wird eine Umgebungsvariable für die ausgeführte Shell gesetzt. Diese Option kann mehrfach angegeben werden, um mehrere Variablen zu setzen. Wenn »=« und WERT fehlen, wird der Wert der Variablen mit dem gleichen Namen in der Programmumgebung verwandt.

    Beachten Sie, dass diese Option für den Befehl login nicht unterstützt wird.

--mkdir
    Wird dies mit bind verwandt, dann wird die Zieldatei oder das Zielverzeichnis erstellt, bevor die Bind-Einhängung angewandt wird. Beachten Sie, dass der Name dieser Option zwar anzeigt, dass sie nur für Verzeichnisse geeignet ist, sie aber auch den Zieldateiknoten, über den eingehängt werden soll, falls das einzuhängende Objekt kein Verzeichnis, sondern eine reguläre Datei, ein Geräteknoten, ein Socket oder ein FIFO ist, erstellt.

--read-only
    Erstellt bei der Verwendung mit bind eine nur lesbare Bind-Einhängung.

    Bei der Verwendung mit clone, import-raw oder import-tar wird ein nur-lesbares Container- oder VM-Abbild erstellt.

-n, --lines=
    Steuert bei der Verwendung mit status die Anzahl der anzuzeigenden Journal-Einträge, gezählt vom neusten. Akzeptiert eine positive Ganzzahl als Argument. Standardmäßig 10.

-o, --output=
    Steuert bei der Verwendung mit status die Formatierung der angezeigten Journal-Einträge. Für die Auswahlmöglichkeiten siehe journalctl(1). Standardmäßig »short«.

--verify=
    Gibt beim Herunterladen eines Container- oder VM-Abbildes an, ob das Abbild vor der Bereitstellung verifiziert werden soll. Akzeptiert »no«, »checksum« oder »signature«. Falls »no«, erfolgt keine Verifizierung. Falls »checksum« angegeben ist, wird nach Abschluss des Herunterladens die Integrität überprüft, aber es erfolgt keine Signaturverifizierung. Falls »signature« angegeben ist, wird die Prüfsumme und die Signatur des Abbildes unter Verwendung des lokalen Schlüsselbundes mit vertrauenswürdigen Lieferanten geprüft. Es wird nachdrücklich empfohlen, diese Option auf »signature« zu setzen, falls der Server und das Protokoll dies unterstützen. Standardmäßig »signature«.

--force
    Wird ein Container- oder VM-Abbild heruntergeladen und eine lokale Kopie des angegebenen Maschinennamens existiert bereits, dann wird diese zuerst gelöscht und durch das neu heruntergeladene Abbild ersetzt.

--format=
    Gibt bei der Verwendung mit den Befehlen export-tar und export-raw das für die erstellte Datei zu verwendende Kompressionsformat an. Akzeptiert entweder »uncompressed«, »xz«, »gzip« oder »bzip2«. Standardmäßig wird das Format automatisch vom übergebenen Abbilddateinamen ermittelt.

--max-addresses=
    Begrenzt bei der Verwendung mit dem Befehl list-machines die Anzahl der für jede Maschine ausgegebenen IP-Adressen. Standardmäßig 1. Durch Verwendung von »all« als Argument für --max-addresses= können alle Adressen angefordert werden. Falls das Argument von --max-addresses= geringer als die tatsächliche Anzahl von Adressen ist, dann folgt »…« der letzten Adresse.

-q, --quiet
    Unterdrückt bei der Ausführung zusätzliche Informationsausgabe.

-H, --host=
    Führt die Aktion aus der Ferne aus. Geben Sie den Rechnernamen oder einen Benutzernamen und Rechnernamen (getrennt durch »@«) an, zu dem verbunden werden soll. Dem Rechnernamen darf optional ein Port, auf dem SSH auf Anfragen wartet, getrennt durch »:« und dann ein Container auf dem angegebenen Host angehängt werden, womit direkt zu einem bestimmten Container auf dem angegebenen Rechner verbunden wird. Dies verwendet SSH, um mit der Maschinen-Verwalterinstanz auf dem Rechner in der Ferne zu kommunizieren. Container-Namen dürfen mit machinectl -H RECHNER aufgezählt werden. Stellen Sie IPv6-Adressen in Klammern.

-M, --machine=
    Verbindet zu dem in dem lokalen Container laufenden systemd-machined.service(8), um die angegebenen Aktionen innerhalb des Containers auszuführen.

--no-pager
    Leitet die Ausgabe nicht an ein Textanzeigeprogramm weiter.

--no-legend
    Gibt die Legende nicht aus, d.h. die Spaltenköpfe und die Fußzeile mit Hinweisen.

--no-ask-password
    Befragt den Benutzer nicht für Authentifizierung für privilegierte Aktionen.

-h, --help
    Zeigt einen kurzen Hilfetext an und beendet das Programm.

--version
    Zeigt eine kurze Versionszeichenkette an und beendet das Programm.

MASCHINEN- UND ABBILDNAMEN

Das Werkzeug machinectl agiert auf Maschinen und Abbildern, deren Namen strengen Regeln folgen müssen. Maschinennamen müssen für den Einsatz als Rechnernamen geeignet sein und daher einer konservativen Teilmenge der DNS- und UNIX/Linux-Semantik folgen. Insbesondere müssen sie aus einer oder mehreren, durch Punkte getrennten nicht-leeren Kennzeichnungszeichenketten bestehen. Es sind keine Punkte am Anfang oder Ende erlaubt. Es ist keine Abfolge von mehreren Punkten erlaubt. Die Kennzeichnungszeichenkette darf nur aus alphanumerischen Zeichen sowie dem Binde- und dem Unterstrich bestehen. Die maximale Länge von Maschinennamen ist 64 Zeichen.

Eine besondere Maschine mit dem Namen ».host« bezieht sich auf den laufenden Rechner selbst. Dies ist auch für die Ausführung von Aktionen oder Untersuchungen des Rechners selbst nützlich. Beachten Sie, dass machinectl list diese besondere Maschine nur anzeigt, wenn der Schalter --all angegeben ist.

Anforderungen an Abbildnamen sind allerdings weniger streng. Sie müssen gültiges UTF-8 und als Dateinamen geeignet sein (und damit weder der einzelne noch der doppelte Punkt sein noch Schrägstriche enthalten) sowie keine Steuerzeichen enthalten. Da viele Aktionen nach einem Abbild über den Namen der angeforderten Maschine suchen, wird empfohlen, Abbilder auf die gleiche strenge Art wie Maschinen zu benennen.

Ein besonderes Abbild mit dem Namen ».host« bezieht sich auf das Abbild des laufenden Rechners. Er wird daher konzeptionell auf den oben beschriebenen Maschinennamen ».host« abgebildet. Beachten Sie, dass machinectl list-images dieses besondere Abbild auch nur anzeigen wird, wenn --all angegeben ist.

DATEIEN UND VERZEICHNISSE

Maschinenabbilder werden bevorzugt in /var/lib/machines/ gespeichert, aber es wird auch in /usr/local/lib/machines/ und /usr/lib/machines/ nach ihnen gesucht. Aus Kompatibilitätsgründen wird auch das Verzeichnis /var/lib/container/ durchsucht. Beachten Sie, dass unterhalb von /usr/ gespeicherte Abbilder immer als nur-lesbar betrachtet werden. Es ist möglich, Maschinenabbilder von anderen Verzeichnissen nach /var/lib/machines/ zu symlinken, um sie der Steuerung durch machinectl zur Verfügung zu stellen.

Beachten Sie, dass einige Abbildaktionen nur auf Btrfs-Dateisystemen unterstützt werden, effizient oder atomar sind.

systemd-nspawn(1) und machinectl verstehen Plattenabbilder in drei Formaten:

    • Ein einfacher Verzeichnisbaum, der die Dateien und Verzeichnisse des zu startenden Containers enthält.

    • Teildatenträger (auf Btrfs-Dateisystemen), die ähnlich zu den oben beschriebenen einfachen Verzeichnissen sind. Sie verfügen allerdings über zusätzliche Vorteile, wie effizientes Klonen und Kontingentmeldungen.

    • »Rohe« Plattenabbilder, d.h. Binärabbilder von Platten mit einer GPT- oder MBR-Partitionstabelle. Abbilder dieses Typs sind normale Dateien mit der Endung ».raw«.

Siehe systemd-nspawn(1) für weitere Informationen über Abbildformate, insbesondere dessen Optionen --directory= und --image=.

BEISPIELE

Beispiel 1. Ein Ubuntu-Abbild herunterladen und darin eine Shell öffnen

    # machinectl pull-tar https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-root.tar.gz
    # systemd-nspawn -M trusty-server-cloudimg-amd64-root

Dies lädt das angegebene .tar-Abbild herunter, verifiziert es und verwendet dann systemd-nspawn(1) zum Öffnen einer Shell darin.

Beispiel 2. Ein Fedora-Abbild herunterladen, ein Passwort für root setzen, es als ein Dienst starten

    # machinectl pull-raw --verify=no \
          https://download.fedoraproject.org/pub/fedora/linux/releases/35/Cloud/x86_64/images/Fedora-Cloud-Base-35-1.2.x86_64.raw.xz \
          Fedora-Cloud-Base-35-1.2.x86-64
    # systemd-nspawn -M Fedora-Cloud-Base-35-1.2.x86-64
    # passwd
    # exit
    # machinectl start Fedora-Cloud-Base-35-1.2.x86-64
    # machinectl login Fedora-Cloud-Base-35-1.2.x86-64

Dies lädt das angegebene .raw-Abbild ohne Verifizierung herunter. Dann wird darin eine Shell geöffnet und das Passwort für root gesetzt. Danach wird die Shell verlassen und die Maschine als Systemdienst gestartet. Mit dem letzten Befehl wird eine Anmeldeshell im Container erbeten.

Beispiel 3. Ein Container-Abbild als Tar-Datei exportieren

    # machinectl export-tar fedora myfedora.tar.xz

Exportiert den Container »fedora« als Xz-komprimierte Tar-Datei myfedora.tar.xz in das aktuelle Verzeichnis.

Beispiel 4. Eine neue Shellsitzung erstellen

    # machinectl shell --uid=lennart

Dies erstellt in einer su(1)-artigen Weise eine neue Shellsitzung auf dem lokalen Rechner für die Benutzerkennung »lennart«.

EXIT-STATUS

Bei Erfolg wird 0 zurückgegeben, anderenfalls ein Fehlercode ungleich Null.

UMGEBUNGSVARIABLEN

$SYSTEMD_LOG_LEVEL
    Die maximale Protokollierstufe ausgesandter Nachrichten (Nachrichten mit einer höheren Protokollierstufe, d.h. weniger wichtige, werden unterdrückt). Sie muss (in absteigender Reihenfolge) entweder alert, crit, err, warning, notice, info, debug oder eine Ganzzahl im Bereich 0…7 sein. Siehe syslog(3) für weitere Informationen.

$SYSTEMD_LOG_COLOR
    Ein logischer Wert. Falls wahr, werden auf das TTY geschriebene Nachrichten gemäß ihrer Priorität eingefärbt.

    Diese Einstellung ist nur nützlich, falls die Nachrichten direkt auf das Terminal geschrieben werden, da journalctl(1) und andere Werkzeuge, die Protokolle anzeigen, selbständig Nachrichten gemäß ihrer Protokollierungsstufe einfärben.

$SYSTEMD_LOG_TIME
    Ein logischer Wert. Falls wahr, wird den Protokollnachrichten der Konsole ein Zeitstempel vorangestellt.

    Diese Einstellung ist nur nützlich, falls die Nachrichten direkt auf das Terminal oder in eine Datei geschrieben werden, da journalctl(1) und andere Werkzeuge, die Protokolle anzeigen, selbständig Zeitstempel basierend auf ihren Metadaten den Nachrichten anhängen werden.

$SYSTEMD_LOG_LOCATION
    Ein logischer Wert. Falls wahr, wird den Protokollnachrichten ein Dateinamen und eine Zeilenummer in dem Quellcode, aus dem die Nachrichten stammen, vorangestellt.

    Beachten Sie, dass der Protokollierort sowieso oft als Metadaten zu den Journal-Einträgen angehängt ist. Die Aufnahme in den Nachrichtentext kann bei der Fehlersuche in Programmen dennoch praktisch sein.

$SYSTEMD_LOG_TID
    Ein logischer Wert. Falls wahr, wird den Nachrichten die aktuelle numerische Thread-Kennung (TID) vorangestellt.

    Beachten Sie, dass diese Informationen sowieso als Metadatan an Journal-Einträge angehängt wird. Die Aufnahme direkt im Nachrichtentext kann aber trotzdem bei der Fehlersuche in Programmen praktisch sein.

$SYSTEMD_LOG_TARGET
    Das Ziel für Protokolliernachrichten. Entweder console (auf das angehängte TTY protokollieren), console-prefixed (auf das angehängte TTY protokollieren, aber die Protokollierstufe und »Einrichtung« voranstellen, siehe syslog(3)), kmsg (in den zirkulären Kernel-Protokollpuffer protokollieren), journal (in das Journal protokollieren (journal-or-kmsg (in das Journal protokollieren, falls verfügbar, und andernfalls nach Kmsg), auto (das geeignete Protokollierziel automatisch ermitteln, die Vorgabe) oder null (die Protokollierung deaktivieren).

$SYSTEMD_PAGER
    Zu verwendendes Textanzeigeprogramm, wenn --no-pager nicht angegeben ist; setzt $PAGER außer Kraft. Falls weder $SYSTEMD_PAGER noch $PAGER gesetzt sind, wird eine Reihe wohlbekannter Textanzeigeprogrammimplementierungen der Reihe nach ausprobiert, einschließlich less(1) und more(1), bis eines gefunden wird. Falls keine Textanzeigeprogrammimplementierung gefunden wird, wird keines aufgerufen. Setzen der Umgebungsvariablen auf die leere Zeichenkette oder den Wert »cat« ist äquivalent zur Übergabe von --no-pager.

$SYSTEMD_LESS
    Setzt die an less übergebenen Optionen (standardmäßig »FRSXMK«) außer Kraft.

    Benutzer könnten insbesondere zwei Optionen ändern wollen:

    K
        Diese Option weist das Textanzeigeprogramm an, sich sofort beim Druck von Strg-C zu beenden. Um less die Handhabung von Strg-C selbst zum Umschalten auf die Eingabeaufforderung zu erlauben, setzen Sie diese Option zurück.

        Falls der Wert von $SYSTEMD_LESS kein »K« enthält und less das aufgerufene Textanzeigeprogramm ist, wird Strg+C durch das Programm ignoriert und muss durch das Textanzeigeprogramm selbst gehandhabt werden.

    X
        Diese Option weist das Textanzeigeprogramm an, keine Termcap-Initialisierungs- und -Deinitalisierungszeichenketten an das Terminal zu senden. Dies ist standardmäßig gesetzt, damit die Darstellung von Befehlen selbst nach dem Beenden des Textanzeigeprogramms sichtbar bleibt. Allerdings stehen dadurch einige Funktionen des Textanzeigeprogramms nicht zur Verfügung; insbesondere ist das Scrollen in der Ausgabe mit der Maus nicht möglich.

    Siehe less(1) für weitere Ausführungen.

$SYSTEMD_LESSCHARSET
    Setzt den an less zu übergebenden Zeichensatz (standardmäßig »utf-8«, falls das aufrufende Terminal als UTF-8-kompatibel erkannt wurde) außer Kraft.

$SYSTEMD_PAGERSECURE
    Akzeptiert einen logischen Wert. Wenn wahr, wird der »sichere« Modus des Seitenanzeigeprogramms verwandt, falls falsch, wird dieser deaktiviert. Falls $SYSTEMD_PAGERSECURE überhaupt nicht gesetzt ist, dann wird der sichere Modus aktiviert, falls die effektive Kennung nicht identisch zu dem Eigentümer der Anmeldesitzung ist, siehe geteuid(2) und sd_pid_get_owner_uid(3). Im sicheren Modus wird LESSSECURE=1 beim Aufruf des Seitenanzeigeprogramms gesetzt und das Seitenanzeigeprogramm muss Befehle deaktivieren, die neue Dateien öffnen oder erstellen oder die einen neuen Unterprozess starten. Falls $SYSTEMD_PAGERSECURE überhaupt nicht gesetzt ist, werden Seitenanzeigeprogramme, bei denen unbekannt ist, ob sie einen sicheren Modus implementieren, nicht verwandt. (Derzeit implementiert nur less(1) einen sicheren Modus.)

    Hinweis: Wenn Befehle mit erhöhten Rechten ausgeführt werden, beispielsweise mittels sudo(8) oder pkexec(1), muss Vorsicht walten gelassen werden, um sicherzustellen, dass keine ungeplanten interaktiven Funktionalitäten aktiviert werden. Der »sichere« Modus für das Seitenanzeigeprogramm kann wie oben beschrieben automatisch aktiviert werden. Durch Setzen von SYSTEMD_PAGERSECURE=0 oder durch Nichtenfernen dieser Einstellung aus der ererbten Umgebung wird es dem Benutzer ermöglicht, beliebige Befehle auszuführen. Beachten Sie, dass auch $SYSTEMD_PAGERSECURE gesetzt werden muss, falls die Variablen $SYSTEMD_PAGER oder $PAGER berücksichtigt werden sollen. Es kann sinnvoll sein, stattdessen den Seitenanzeiger komplett mit --no-pager zu deaktivieren.

$SYSTEMD_COLORS
    Akzeptiert ein logisches Argument. Wenn wahr, werden systemd und verwandte Hilfswerkzeuge Farben in ihrer Ausgabe verwenden, andernfalls wird die Ausgabe einfarbig sein. Zusätzlich kann die Variable eine der folgenden besonderen Werte annehmen: »16«, »256«, um die Verwendung von Farbe auf die grundlegenden 16 bzw. 256 ANSI-Farben zu beschränken. Dies kann festgelegt werden, um die auf $TERM und der vorliegenden Verbindung der Konsole basierende automatische Entscheidung außer Kraft zu setzen.

$SYSTEMD_URLIFY
    Dies muss ein logischer Wert sein. Er steuert, ob anklickbare Links für Terminal-Emulatoren, die dies unterstützen, erstellt werden sollen. Dies kann angegeben werden, um die Entscheidung, die systemd basierend auf $TERM und anderen Bedingungen trifft, außer Kraft zu setzen.

SIEHE AUCH

systemd(1), systemd-machined.service(8), systemd-nspawn(1), systemd.special(7), tar(1), xz(1), gzip(1), bzip2(1)

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer (debian-l10n-german@lists.debian.org).