MACHINECTL(1) | machinectl | 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:
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:
BEFEHLE
Die folgenden Befehle werden verstanden:
Maschinenbefehle
list
Hinzugefügt in Version 206.
status NAME…
Hinzugefügt in Version 206.
show [NAME…]
Hinzugefügt in Version 206.
start NAME…
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.
Hinzugefügt in Version 219.
login [NAME]
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.
Hinzugefügt in Version 209.
shell [[NAME@]NAME [PFAD [ARGUMENTE…]]]
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.
Hinzugefügt in Version 225.
enable NAME…, disable NAME…
Dieser Befehl lädt die Systemverwalterkonfiguration nach dem Abschluss der Aktion implizit neu. Beachten Sie, dass dieser Befehl Container nicht implizit startet oder ausschaltet, auf die agiert wurde. Falls dies gewünscht ist, kombinieren Sie den Befehl mit dem Schalter --now.
Hinzugefügt in Version 219.
poweroff NAME…
Hinzugefügt in Version 212.
reboot NAME…
Hinzugefügt in Version 209.
terminate NAME…
Hinzugefügt in Version 206.
kill NAME…
Hinzugefügt in Version 206.
bind NAME PFAD [PFAD]
Hinzugefügt in Version 219.
copy-to NAME PFAD [PFAD] --force
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).
Hinzugefügt in Version 219.
copy-from NAME PFAD [PFAD] --force
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).
Hinzugefügt in Version 219.
Abbild-Befehle
list-images
Hinzugefügt in Version 219.
image-status [NAME…]
Hinzugefügt in Version 219.
show-image [NAME…]
Hinzugefügt in Version 219.
edit NAME|DATEI
Hinzugefügt in Version 254.
cat NAME|DATEI
Hinzugefügt in Version 254.
clone NAME NAME
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.
Hinzugefügt in Version 219.
rename NAME NAME
Hinzugefügt in Version 219.
read-only NAME [LOGISCH]
Hinzugefügt in Version 219.
remove NAME…
Hinzugefügt in Version 219.
set-limit [NAME] BYTE
Beachten Sie, dass die Container-bezogenen Größenbeschränkungen nur auf Btrfs-Dateisystemen unterstützt werden.
Hinzugefügt in Version 220.
clean
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.
Hinzugefügt in Version 230.
Abbildübertragungsbefehle
pull-tar URL [NAME]
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.
Hinzugefügt in Version 219.
pull-raw URL [NAME]
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.
Hinzugefügt in Version 219.
import-tar DATEI [NAME], import-raw DATEI [NAME]
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.
Hinzugefügt in Version 220.
import-fs VERZEICHNIS [NAME]
Hinzugefügt in Version 240.
export-tar NAME [DATEI], export-raw NAME [DATEI]
Ä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.
Hinzugefügt in Version 220.
list-transfers
Hinzugefügt in Version 219.
cancel-transfer KENNUNG…
Hinzugefügt in Version 219.
OPTIONEN
Die folgenden Optionen werden verstanden:
-p, --property=
Hinzugefügt in Version 206.
-a, --all
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.
Hinzugefügt in Version 206.
--value
Hinzugefügt in Version 230.
-l, --full
Hinzugefügt in Version 206.
--kill-whom=
Hinzugefügt in Version 206.
-s, --signal=
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=
Hinzugefügt in Version 225.
-E NAME[=WERT], --setenv=NAME[=WERT]
Beachten Sie, dass diese Option für den Befehl login nicht unterstützt wird.
Hinzugefügt in Version 230.
--mkdir
Hinzugefügt in Version 219.
--read-only
Bei der Verwendung mit clone, import-raw oder import-tar wird ein nur-lesbares Container- oder VM-Abbild erstellt.
Hinzugefügt in Version 219.
-n, --lines=
Hinzugefügt in Version 219.
-o, --output=
Hinzugefügt in Version 219.
--verify=
Hinzugefügt in Version 219.
--now
Hinzugefügt in Version 253.
--force
Hinzugefügt in Version 219.
--format=
Hinzugefügt in Version 220.
--max-addresses=
Hinzugefügt in Version 232.
-q, --quiet
Hinzugefügt in Version 236.
-H, --host=
-M, --machine=
Hinzugefügt in Version 235.
--no-pager
--no-legend
--no-ask-password
-h, --help
--version
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:
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/40/Cloud/x86_64/images/Fedora-Cloud-Base-40-1.6.x86_64.raw.xz \ Fedora-Cloud-Base-40-1.6.x86-64 # systemd-nspawn -M Fedora-Cloud-Base-40-1.6.x86-64 # passwd # exit # machinectl start Fedora-Cloud-Base-40-1.6.x86-64 # machinectl login Fedora-Cloud-Base-40-1.6.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
$SYSTEMD_LOG_COLOR
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
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
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
Beachten Sie, dass diese Informationen sowieso als Metadaten 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
$SYSTEMD_LOG_RATELIMIT_KMSG
$SYSTEMD_PAGER
Beachten Sie: Falls $SYSTEMD_PAGERSECURE nicht gesetzt ist, dann wird $SYSTEMD_PAGER (sowie $PAGER) ohne Rückmeldung ignoriert.
$SYSTEMD_LESS
Benutzer könnten insbesondere zwei Optionen ändern wollen:
K
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
Beachten Sie, dass das Setzen der regulären Umgebungsvariablen $LESS keine Auswirkungen auf die Ausführungen von less(1) durch systemd(1)-Werkzeuge hat.
Siehe less(1) für weitere Ausführungen.
$SYSTEMD_LESSCHARSET
Beachten Sie, dass das Setzen der regulären Umgebungsvariablen $LESSCHARSET keine Auswirkungen auf die Ausführungen von less(1) durch systemd(1)-Werkzeuge hat.
$SYSTEMD_PAGERSECURE
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 Textanzeigeprogramm 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 das Textanzeigeprogramm komplett mit --no-pager zu deaktivieren.
$SYSTEMD_COLORS
$SYSTEMD_URLIFY
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 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.
systemd 255 |