Erstellen und führen Sie Shutdown-Skripts aus, die unmittelbar vor dem Beenden oder Neustarten einer VM-Instanz Befehle ausführen. Das ist vor allem nützlich, wenn Sie möchten, dass automatische Skripts Instanzen starten oder beenden und andere Instanzen genug Zeit haben sollen, Aufgaben zu erledigen (Export von Logs oder Synchronisation mit anderen Systemen).
Shutdown-Skripts sind besonders nützlich bei VMs in einer verwalteten Instanzgruppe mit Autoscaling. Wenn das Autoscaling eine VM in der Gruppe schließt, wird das Shutdown-Skript ausgeführt, bevor sie tatsächlich geschlossen wird. Das Skript führt alle Aktionen aus, die Sie dafür definiert haben. Das Skript wird während der begrenzten Shutdown-Phase ausgeführt, bevor die VM beendet wird. Ein Shutdown-Skript kann zum Beispiel verarbeitete Daten in Cloud Storage speichern oder Protokolle sichern.
Shutdown-Skripts funktionieren ähnlich wie Startskripts. Ein Großteil der Dokumentation für Startskripts gilt auch für Shutdown-Skripts.
Bei Aufgaben zum Herunterfahren und Neustart führen VMs immer Shutdown-Skripts aus:
- Für Linux-VMs mit dem Nutzer
root
. - Für Windows-VMs mit dem Konto
System
.
Hinweise
- Hier finden Sie Informationen zu Startskripts.
- Was genau ist der Metadatenserver?
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Alle Berechtigungen, die für das Erstellen einer Instanz erforderlich sind.
compute.instances.setMetadata
für die Instanz- Für die Ausführung von Shutdown-Skripts steht vor dem Beenden der Instanz nur eine begrenzte Zeit zur Verfügung:
- On-Demand-Instanzen: 90 Sekunden nach Beenden oder Löschen einer Instanz
- Instanzen auf Abruf: 30 Sekunden nach Beginn des vorzeitigen Beendens der Instanz
- Compute Engine führt Shutdown-Scripts nur nach Best-Effort-Prinzip aus. In seltenen Fällen kann Compute Engine daher nicht garantieren, dass das Shutdown-Script abgeschlossen wird.
- Unter Windows wird die lokale Gruppenrichtlinie verwendet, um das Shutdown-Script zu starten.
- Das Installationspaket konfiguriert die
Computer Configuration/Windows Setting/Scripts (Startup/Shutdown)
-Einstellung der lokalen Gruppenrichtlinie so, dass das Script beim Herunterfahren des Systems gestartet wird.
- Das Installationspaket konfiguriert die
- Wenn eine Instanz aufgrund der an die API gesendeten Anfrage
instances.delete
oderinstances.stop
heruntergefahren wird - Wenn Compute Engine eine Instanz auf Abruf als Teil der vorzeitigen Beendigung stoppt
- Wenn eine Instanz durch eine Anfrage an das Gastbetriebssystem wie
sudo shutdown
odersudo reboot
beendet wird - Wenn eine Instanz manuell heruntergefahren wird – über die Google Cloud Console oder mit dem
gcloud compute
-Tool - Es kopiert das Skript in eine lokale Datei in der Instanz.
- Es legt die Berechtigungen der Datei so fest, dass sie ausgeführt werden kann.
- Es führt die Datei aus, wenn die Instanz beendet wird.
Gehen Sie zur Seite Instanz erstellen.
Geben Sie die VM-Details an
Maximieren Sie den Bereich Erweiterte Optionen.
Maximieren Sie Verwaltung und gehen Sie so vor:
- Klicken Sie im Abschnitt Benutzerdefinierte Metadaten auf Element hinzufügen.
- Geben Sie im Feld Schlüssel
shutdown-script
für den Metadatenschlüssel ein. - Geben Sie im Feld Werte den Inhalt Ihres Shutdown-Skripts ein.
Fahren Sie mit dem VM-Erstellungsprozess fort.
shutdown-script
: Geben Sie mit diesem Schlüssel den Inhalt des Shutdown-Skripts direkt an. Mit der Google Cloud CLI können Sie den Pfad für ein Shutdown-Script mit dem Flag--metadata-from-file
und dem Metadatenschlüsselshutdown-script
angeben.shutdown-script-url
: Geben Sie mit diesem Schlüssel die Cloud Storage-URL zur Shutdown-Skriptdatei an.Verbindung zur Instanz herstellen und den folgenden Befehl ausführen:
sudo journalctl -u google-shutdown-scripts.service
Ausgabe über den seriellen Port 1 in der Google Cloud Console ansehen und auf
google_metadata_script_runner
-Ereignisse prüfen.IAP Desktop von einer Windows-Workstation aus. Weitere Informationen finden Sie im Repository GoogleCloudPlatform/iap-desktop auf GitHub.
Serieller Port 1 in der Google Cloud Console. Weitere Informationen finden Sie unter Ausgabe des seriellen Ports ansehen.
Anwendungs-Log des Windows-Ereignisanzeige.
IAP Desktop von einer Windows-Workstation aus. Weitere Informationen finden Sie im Repository GoogleCloudPlatform/iap-desktop auf GitHub.
Terraform
Wenn Sie die Terraform-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
Weitere Informationen unter Set up authentication for a local development environment.
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.
Erforderliche Berechtigungen für diese Aufgabe
Zum Ausführen dieser Aufgabe benötigen Sie die folgende Berechtigung:
Spezifikationen
Beschränkungen
Bei der Verwendung von Shutdown-Skripts gibt es einige Beschränkungen:
Shutdown-Skripts aufrufen
Shutdown-Skripts werden durch bestimmte ACPI-Ereignisse (Advanced Configuration and Power Interface) ausgelöst, zum Beispiel Neustarten oder Beenden. Zum Neustarten oder Beenden gibt es viele Möglichkeiten, aber nur einige davon lösen das Shutdown-Skript aus. Das Shutdown-Skript wird als Teil der folgenden Aktionen ausgeführt:
Das Shutdown-Skript wird nicht ausgeführt, wenn die Instanz durch
instances().reset
zurückgesetzt wird.Ein Shutdown-Skript kann einen beliebigen Dateityp haben. Gibt es ein Shutdown-Skript, macht Compute Engine folgendes:
Sie können zum Beispiel ein Python-Skript statt eines Bash-Skripts verwenden. Aber denken Sie daran, dass Compute Engine das Skript so ausführt, wie es ist. Dabei kommt es nicht auf die Art des Skripts an.
Bei der Ausführung eines Skripts, das nicht in Bash geschrieben ist, müssen Sie eine Shebang-Zeile zu Beginn der Datei hinzufügen, damit das Betriebssystem erkennen kann, welcher Interpreter verwendet werden muss. Bei einem Python-Skript können Sie zum Beispiel die folgende Shebang-Zeile hinzufügen:
#!/usr/bin/python
Ausführungszeit für das Shutdown-Skript
Das Shutdown-Skript hat nur wenig Zeit, bevor die Instanz geschlossen wird oder neu startet. In diesem Zeitraum versucht Compute Engine, Ihr Shutdown-Skript auszuführen. Wenn das Skript länger braucht, wird die Instanz automatisch beendet und alle laufenden Aufgaben werden abgebrochen. Wenn Sie eine Instanz durch eine Anfrage an das Gastbetriebssystem mit dem Befehl
sudo shutdown
beenden oder neu starten, gilt diese Einschränkung nicht.Die Dauer des Shutdowns hängt von der Art der Instanz ab. Präemptive Instanzen haben eine kürzere Shutdown-Dauer als normale Instanzen. Weitere Informationen zu den Zeitlimits für den Shutdown jedes Instanztyps finden Sie unter Shutdown-Dauer.
Ihr Shutdown-Skript sollte generell innerhalb der Shutdown-Dauer abgeschlossen werden, damit das Betriebssystem genug Zeit hat, den eigenen Shutdown-Vorgang abzuschließen und den Zwischenspeicher auf die Festplatte zu verschieben.
Lokale Shutdown-Skripts
Ein lokales Shutdown-Skript ist auf Ihrem lokalen Computer ansässig. Sie können es als Datei verwenden oder den Inhalt direkt an Compute Engine weiterleiten.
Mit Shutdown-Skripts können so viele Aktionen wie nötig ausgeführt werden. Wenn Sie die Datei jedoch lokal übertragen, darf Ihr Skript die Längenbeschränkung für Metadatenwerte von 256 KB nicht überschreiten. Um ein Skript zu verwenden, das die Längenbeschränkung überschreitet, sollten Sie Ihre Datei in Cloud Storage speichern. Weitere Informationen finden Sie unter Shutdown-Skript aus Cloud Storage verwenden.
Shutdown-Skriptdatei angeben
Sie können eine lokale Shutdown-Skriptdatei nur über das
gcloud
-Befehlszeilentool übertragen.gcloud
Geben Sie zum Übertragen einer lokalen Shutdown-Skriptdatei das Flag
--metadata-from-file
gefolgt vom Metadaten-Schlüsselpaarshutdown-script=PATH/TO/FILE
an, wobeiPATH/TO/FILE
für den relativen Pfad zum Shutdown-Skript steht. Beispiel:gcloud compute instances create example-instance \ --metadata-from-file shutdown-script=examples/scripts/install.sh
Terraform
Wenn Sie ein Shutdown-Script direkt angeben möchten, verwenden Sie die Ressource
google_compute_instance
mit dem Pfad zum Shutdown-Script in den Metadaten.Shutdown-Skriptinhalte direkt angeben
Alternativ können Sie die Inhalte Ihres Shutdown-Skripts auch direkt eingeben.
Console
In der Google Cloud Console können Sie ein Shutdown-Script direkt mit dem Metadatenschlüssel
shutdown-script
angeben:gcloud
Verwenden Sie in der Google Cloud-Befehlszeile das Flag
--metadata
, um den Inhalt Ihres Shutdown-Skripts gefolgt vom Schlüsselpaarshutdown-script=CONTENTS
anzugeben, wobeiCONTENTS
für den Inhalt Ihres Shutdown-Skripts steht.gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash > # Shuts down Apache server > /etc/init.d/apache2 stop"
Terraform
Wenn Sie ein Shutdown-Script direkt angeben möchten, verwenden Sie die Ressource
google_compute_instance
mit dem Shutdown-Script in den Metadaten.REST
Beim Erstellen einer Instanz können Sie ein Shutdown-Skript als Teil des Metadatenattributs für Ihre Anfrage angeben. Verwenden Sie
shutdown-script
als Metadatenschlüssel:POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances {... "metadata": { "items": [ { "key": "shutdown-script", "value": "#! /bin/bash\n\n# Shuts down Apache server\n/etc/init.d/apache2 stop" } ] }... }
Shutdown-Skript für Windows-Instanzen angeben
Sie können Shutdown-Skripte auf Windows-Instanzen mit den folgenden Metadatenschlüsseln für Windows ausführen. Wählen Sie einen der folgenden Sonderschlüssel. Jeder Schlüssel sollte zu dem Skript passen, das Sie verwenden wollen.
Sie können mehrere Shutdown-Skripts anhand verschiedener Schlüssel in Ihrer Instanz verwenden. Dabei darf jedoch jeder Schlüssel nur einmal pro virtueller Maschine eingesetzt werden.
Die folgenden Schlüssel können wie oben beschrieben für lokale Shutdown-Skripts verwendet werden.
cmd
-Shutdown-Skriptsbat
-Shutdown-Skriptsps1
-Shutdown-Skriptswindows-shutdown-script-cmd
windows-shutdown-script-bat
windows-shutdown-script-ps1
Shutdown-Skript aus Cloud Storage verwenden
Sie können Shutdown-Skripts in Cloud Storage speichern und von dort aus verwenden. Folgen Sie der Anleitung in der Dokumentation zu Startskripts, aber ersetzen Sie
startup-script-url
durchshutdown-script-url
.Ersetzen Sie bei Windows-Instanzen
windows-startup-script-url
durchwindows-shutdown-script-url
.Shutdown-Skript auf laufende Instanzen anwenden
Folgen Sie der Anleitung in der Dokumentation Startskript für laufende Instanzen anwenden. Ersetzen Sie die Metadatenschlüssel mit einem der folgenden:
Ausgabe eines Shutdown-Skripts ansehen
Linux
Sie können die Ausgabe eines Linux-Shutdown-Skripts aufrufen, indem Sie eines der folgenden Dinge tun:
Windows
Sehen Sie sich die Ausgabe eines Windows Server-Shutdown-Script an. Verwenden Sie dazu eines der folgenden Dinge und prüfen Sie, ob
GCEMetadataScripts
-Ereignisse vorhanden sind:Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2024-11-25 (UTC).
-