Crie e execute scripts de encerramento que executam comandos imediatamente antes de uma instância de máquina virtual (VM) ser parada ou reiniciada. Isto é útil se depender de scripts automatizados para iniciar e encerrar instâncias, o que permite que as instâncias tenham tempo para limpar ou realizar tarefas, como exportar registos ou sincronizar com outros sistemas.
Os scripts de encerramento são especialmente úteis para VMs num grupo de instâncias gerido com um escalador automático. Se o escalador automático encerrar uma VM no grupo, o script de encerramento é executado antes de a VM parar e o script de encerramento executa todas as ações que definir. O script é executado durante o período de encerramento limitado antes de a VM parar. Por exemplo, o script de encerramento pode copiar os dados processados para o Cloud Storage ou fazer uma cópia de segurança de quaisquer registos.
Os scripts de encerramento funcionam de forma muito semelhante aos scripts de arranque. Grande parte da documentação dos scripts de arranque também se aplica aos scripts de encerramento.
Para as tarefas de encerramento e reinício, as VMs executam sempre scripts de encerramento da seguinte forma:
- Para VMs Linux, através do utilizador
root
. - Para VMs do Windows, através da conta
System
.
Antes de começar
- Saiba mais sobre os guiões de arranque.
- Compreenda o que é o servidor de metadados.
-
Se ainda não o tiver feito, configure a autenticação.
A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.
gcloud
-
Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
- Set a default region and zone.
Terraform
Para usar os exemplos do Terraform nesta página num ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e, em seguida, configure as credenciais predefinidas da aplicação com as suas credenciais de utilizador.
Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada.
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para mais informações, consulte Set up authentication for a local development environment.
REST
Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.
Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada.
Para mais informações, consulte o artigo Autenticar para usar REST na Trusted Cloud documentação de autenticação.
Autorizações necessárias para esta tarefa
Para realizar esta tarefa, tem de ter as seguintes autorizações:
- Todas as autorizações necessárias para criar uma instância
compute.instances.setMetadata
na instância
Especificações
As secções seguintes descrevem as especificações dos scripts de encerramento.
Limitações
Existem algumas limitações a ter em atenção quando usar scripts de encerramento:
- O Compute Engine executa scripts de encerramento apenas com base no melhor esforço. Em casos raros, o Compute Engine não pode garantir que o script de encerramento é concluído.
- No Windows, a Política de Grupo Local é usada para iniciar o script de encerramento.
- O pacote de instalação configura a definição da política de grupo local
Computer Configuration/Windows Setting/Scripts (Startup/Shutdown)
para iniciar o script no encerramento do sistema.
- O pacote de instalação configura a definição da política de grupo local
Invocar script de encerramento
Os scripts de encerramento são acionados quando a instância é encerrada após a ocorrência de qualquer um dos seguintes eventos:
Faça o seguinte:
O Compute Engine para uma instância como parte de uma paragem programada ou de uma operação de eliminação.
O Compute Engine para uma VM do Spot ou uma instância preemptível como parte do processo de preemptão.
Um script de encerramento pode ser de qualquer tipo de ficheiro. Se existir um script de encerramento na instância, o Compute Engine faz o seguinte:
- Copia o script para um ficheiro local na instância.
- Define autorizações no ficheiro para tornar o script executável.
- Executa o ficheiro quando a instância é encerrada.
Por exemplo, pode fornecer um guião Python em vez de um guião bash. Tenha em atenção que o Compute Engine executa o script literalmente, independentemente do tipo de script.
Para executar um script que não seja bash, adicione uma linha shebang na parte superior do ficheiro para informar o sistema operativo sobre o intérprete a usar. Por exemplo, para um script Python, pode adicionar uma linha shebang como:
#!/usr/bin/python
Tempo de execução do guião de encerramento
Os scripts de encerramento começam a ser executados quando o Compute Engine define o estado da instância como
STOPPING
. Os seus scripts têm de ser concluídos antes de a instância ser totalmente parada, ou seja, quando o respetivo estado muda paraTERMINATED
. O tempo que a instância demora a atingir o estadoTERMINATED
varia consoante o tipo de instância.Se os seus scripts demorarem mais tempo do que o necessário para a instância parar, o Compute Engine para os scripts à força, o que pode levar à perda de dados ou a tarefas incompletas. Para evitar esta situação, pare a instância a partir do respetivo SO convidado. Esta abordagem mantém o estado da instância como
STOPPING
até que os scripts de encerramento terminem a execução.Use um script de encerramento local
Um script de encerramento local é um script que reside no seu computador local. Transmita um script de encerramento local como um ficheiro ou fornecendo o conteúdo diretamente ao Compute Engine.
Os scripts de encerramento podem realizar todas as ações necessárias, mas se estiver a transmitir o ficheiro localmente, o script não pode exceder o limite de comprimento do valor dos metadados de 256 KB. Para usar um script que exceda o limite de comprimento, armazene o ficheiro no Cloud Storage. Consulte Use o script de encerramento do Cloud Storage para mais informações.
Faculte um ficheiro de script de encerramento
Só pode transmitir um ficheiro de script de encerramento local através da
gcloud
ferramenta de linha de comandos.gcloud
Para transmitir um ficheiro de script de encerramento local, forneça a flag
--metadata-from-file
, seguida de um par de chaves de metadados,shutdown-script=PATH/TO/FILE
, em quePATH/TO/FILE
é um caminho relativo para o script de encerramento. Por exemplo:gcloud compute instances create example-instance \ --metadata-from-file shutdown-script=examples/scripts/install.sh
Terraform
Para especificar um script de encerramento diretamente, use o recurso
google_compute_instance
com o caminho para o script de encerramento nos metadados.Forneça diretamente o conteúdo do script de encerramento
Em alternativa, pode transmitir diretamente o conteúdo do seu script de encerramento.
Consola
Na Trusted Cloud consola, especifique um script de encerramento diretamente através da chave de metadados
shutdown-script
:Aceda à página Criar uma instância.
Especifique os detalhes da VM.
Expanda a secção Opções avançadas.
Expanda Gestão e faça o seguinte:
- Na secção Metadados, clique em Adicionar item.
- No campo Chave, introduza
shutdown-script
para a chave de metadados. - No campo Valor, adicione o conteúdo do guião de encerramento.
Continue com o processo de criação da VM.
gcloud
Usando a CLI do Google Cloud, use a flag
--metadata
para fornecer o conteúdo do seu script de encerramento, seguido do par de chavesshutdown-script=CONTENTS
, em queCONTENTS
é o conteúdo do seu script de encerramento.gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash > # Shuts down Apache server > /etc/init.d/apache2 stop"
Terraform
Para especificar um script de encerramento diretamente, use o recurso
google_compute_instance
com o script de encerramento nos metadados.REST
Na API, forneça um script de encerramento como parte da propriedade de metadados no seu pedido quando criar uma instância. Usar
shutdown-script
como a chave de metadados: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" } ] }... }
Forneça um script de encerramento em instâncias do Windows
Execute scripts de encerramento em instâncias do Windows através das seguintes chaves de metadados específicas do Windows. Escolha qualquer uma das teclas especializadas indicadas abaixo. Cada chave deve corresponder ao tipo de script que quer executar.
Pode especificar vários scripts de encerramento transmitindo chaves diferentes à sua instância, mas cada chave só pode ser especificada uma vez por máquina virtual.
As seguintes teclas podem ser usadas com um script de encerramento local, seguindo as mesmas instruções acima.
cmd
scripts de encerramentobat
scripts de encerramentops1
scripts de encerramentowindows-shutdown-script-cmd
windows-shutdown-script-bat
windows-shutdown-script-ps1
Use um script de encerramento do Cloud Storage
Pode armazenar e usar um script de encerramento a partir do Cloud Storage. Siga as instruções na documentação dos scripts de arranque, mas substitua
startup-script-url
porshutdown-script-url
.Para instâncias do Windows, substitua
windows-startup-script-url
porwindows-shutdown-script-url
.Aplique um script de encerramento a instâncias em execução
Para adicionar um script de encerramento a uma instância em execução, siga as instruções na documentação Aplicar um script de arranque a instâncias em execução, mas substitua as chaves de metadados por uma das seguintes chaves:
shutdown-script
: forneça o conteúdo do guião de encerramento diretamente com esta chave. Através da CLI do Google Cloud, pode indicar o caminho para um ficheiro de script de encerramento, usando a flag--metadata-from-file
e a chave de metadadosshutdown-script
.shutdown-script-url
: forneça um URL do Cloud Storage para o ficheiro de script de encerramento com esta chave.
Ver a saída de um script de encerramento
Linux
Pode ver o resultado de um script de encerramento do Linux através de qualquer uma das seguintes ações:
Estabelecer ligação à instância e executar o seguinte comando:
sudo journalctl -u google-shutdown-scripts.service
Ver a saída através da porta série 1 na Trusted Cloud consola e verificar a existência de eventos
google_metadata_script_runner
.IAP Desktop a partir de uma estação de trabalho do Windows. Para mais informações, consulte o repositório GoogleCloudPlatform/iap-desktop no GitHub.
Windows
Veja o resultado de um script de encerramento do Windows Server através de qualquer um dos seguintes métodos e verifique se existem eventos
GCEMetadataScripts
:Porta de série 1 na Trusted Cloud consola. Para mais informações, consulte o artigo Ver a saída da porta série.
Registo de aplicações do Event Viewer do Windows.
IAP Desktop a partir de uma estação de trabalho do Windows. Para mais informações, consulte o repositório GoogleCloudPlatform/iap-desktop no GitHub.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-25 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-25 UTC."],[],[],null,[]] -