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-whom=. 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]
--force
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]
--force
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-whom=
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 angezeigten
IP-Adressen. Standardmäßig 1. Durch Verwendung von
»all« können alle Adressen angefordert werden. Falls die
Begrenzung 0 ist, wird die Adressspalte nicht angezeigt. Falls andernfalls die
Maschine mehr Adressen als angezeigt hat, 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
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
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.
Beachten Sie: Falls $SYSTEMD_PAGERSECURE nicht gesetzt ist,
dann wird $SYSTEMD_PAGER (sowie $PAGER) ohne
Rückmeldung ignoriert.
$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.
Ü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 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.