Crie e execute scripts de desligamento que executam comandos logo antes de uma instância de máquina virtual (VM) ser interrompida ou reiniciada. Isso é útil se você depende de scripts automatizados para iniciar e encerrar instâncias, permitindo que as instâncias tenham tempo para limpar ou executar tarefas, como exportar logs ou sincronizar com outros sistemas.
Os scripts de desligamento são especialmente úteis para VMs em um grupo de instâncias gerenciadas com um escalonador automático . Se o escalonador automático encerrar uma VM no grupo, o script de desligamento será executado antes da VM parar e o script de desligamento executará quaisquer ações que você definir. O script é executado durante o período de desligamento limitado antes da parada da VM. Por exemplo, seu script de encerramento pode copiar dados processados para o Cloud Storage ou fazer backup de registros.
Os scripts de desligamento funcionam de maneira muito semelhante aos scripts de inicialização. Grande parte da documentação para scripts de inicialização também se aplica a scripts de desligamento.
Para tarefas de desligamento e reinicialização, as VMs sempre executam scripts de desligamento da seguinte forma:
- Para VMs Linux, usando o usuário
root
. - Para VMs do Windows, usando a conta
System
.
Antes de começar
- Saiba mais sobre scripts de inicialização .
- Entenda o que é o servidor de metadados .
- Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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 Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.
- Todas as permissões necessárias para criar uma instância
-
compute.instances.setMetadata
na instância - O Compute Engine executa scripts de desligamento apenas com base no melhor esforço. Em casos raros, o Compute Engine não pode garantir que o script de encerramento será concluído.
- No Windows, a Política de Grupo Local é usada para iniciar o script de desligamento.
- O pacote de instalação define a configuração
Computer Configuration/Windows Setting/Scripts (Startup/Shutdown)
para iniciar o script após o desligamento do sistema.
- O pacote de instalação define a configuração
Você faz o seguinte:
O Compute Engine interrompe uma instância como parte de uma operação programada de interrupção ou exclusão.
O Compute Engine interrompe uma VM Spot ou uma instância preemptiva como parte do processo de preempção .
- Copia o script para um arquivo local na instância.
- Define permissões no arquivo para tornar o script executável.
- Executa o arquivo quando a instância é encerrada.
Vá para a página Criar uma instância .
Especifique os detalhes da VM.
Expanda a seção Opções avançadas .
Expanda Management e faça o seguinte:
- Na seção Metadados , clique em Adicionar item .
- No campo Chave , insira
shutdown-script
para a chave de metadados. - No campo Valor , adicione o conteúdo do seu script de desligamento.
Continue com o processo de criação da VM.
-
shutdown-script
: Forneça o conteúdo do script de desligamento diretamente com esta chave. Usando a CLI do Google Cloud, você pode fornecer o caminho para um arquivo de script de desligamento usando a sinalização--metadata-from-file
e a chave de metadadosshutdown-script
. -
shutdown-script-url
: forneça um URL do Cloud Storage para o arquivo de script de desligamento com esta chave. Conectando-se à instância e executando o seguinte comando:
sudo journalctl -u google-shutdown-scripts.service
Visualização da saída por meio da porta serial 1 no console do Google Cloud e verificação de eventos
google_metadata_script_runner
.IAP Desktop de uma estação de trabalho Windows. Para obter mais informações, consulte o repositório GoogleCloudPlatform/iap-desktop no GitHub.
Porta serial 1 no console do Google Cloud. Para obter mais informações, consulte Visualizando a saída da porta serial .
Log de aplicativos do Visualizador de eventos do Windows.
IAP Desktop de uma estação de trabalho Windows. Para obter mais informações, consulte o repositório GoogleCloudPlatform/iap-desktop no GitHub.
- Para VMs Linux, usando o usuário
root
. - Para VMs do Windows, usando a conta
System
. - Saiba mais sobre scripts de inicialização .
- Entenda o que é o servidor de metadados .
- Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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 Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.
- Todas as permissões necessárias para criar uma instância
-
compute.instances.setMetadata
na instância - O Compute Engine executa scripts de desligamento apenas com base no melhor esforço. Em casos raros, o Compute Engine não pode garantir que o script de encerramento será concluído.
- No Windows, a Política de Grupo Local é usada para iniciar o script de desligamento.
- O pacote de instalação define a configuração
Computer Configuration/Windows Setting/Scripts (Startup/Shutdown)
para iniciar o script após o desligamento do sistema.
- O pacote de instalação define a configuração
Você faz o seguinte:
O Compute Engine interrompe uma instância como parte de uma operação programada de interrupção ou exclusão.
O Compute Engine interrompe uma VM Spot ou uma instância preemptiva como parte do processo de preempção .
- Copia o script para um arquivo local na instância.
- Define permissões no arquivo para tornar o script executável.
- Executa o arquivo quando a instância é encerrada.
Vá para a página Criar uma instância .
Especifique os detalhes da VM.
Expanda a seção Opções avançadas .
Expanda Management e faça o seguinte:
- Na seção Metadados , clique em Adicionar item .
- No campo Chave , insira
shutdown-script
para a chave de metadados. - No campo Valor , adicione o conteúdo do seu script de desligamento.
Continue com o processo de criação da VM.
-
shutdown-script
: Forneça o conteúdo do script de desligamento diretamente com esta chave. Usando a CLI do Google Cloud, você pode fornecer o caminho para um arquivo de script de desligamento usando a sinalização--metadata-from-file
e a chave de metadadosshutdown-script
. -
shutdown-script-url
: forneça um URL do Cloud Storage para o arquivo de script de desligamento com esta chave. Conectando-se à instância e executando o seguinte comando:
sudo journalctl -u google-shutdown-scripts.service
Visualização da saída por meio da porta serial 1 no console do Google Cloud e verificação de eventos
google_metadata_script_runner
.IAP Desktop de uma estação de trabalho Windows. Para obter mais informações, consulte o repositório GoogleCloudPlatform/iap-desktop no GitHub.
Porta serial 1 no console do Google Cloud. Para obter mais informações, consulte Visualizando a saída da porta serial .
Log de aplicativos do Visualizador de eventos do Windows.
IAP Desktop de uma estação de trabalho Windows. Para obter mais informações, consulte o repositório GoogleCloudPlatform/iap-desktop no GitHub.
Terraform
Para usar os exemplos do Terraform nesta página em um ambiente de desenvolvimento local, instale e inicialize a gcloud CLI e, em seguida, configure o Application Default Credentials com suas credenciais de usuário.
Confira mais informações em Set up authentication for a local development environment.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Permissões necessárias para esta tarefa
Para executar esta tarefa, você deve ter as seguintes permissões :
Especificações
As seções a seguir descrevem as especificações para scripts de desligamento.
Limitações
Existem algumas limitações a serem observadas ao usar scripts de desligamento:
Invocação de script de desligamento
Os scripts de encerramento são acionados quando a instância é encerrada após qualquer um dos seguintes eventos:
Um script de desligamento pode ser de qualquer tipo de arquivo. Se houver um script de desligamento presente na instância, o Compute Engine fará o seguinte:
Você poderia, por exemplo, fornecer um script Python em vez de um script bash. Lembre-se de 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 no topo do arquivo para que o sistema operacional saiba qual interpretador usar. Por exemplo, para um script Python, você pode adicionar uma linha shebang como:
#!/usr/bin/python
Tempo de execução do script de desligamento
Os scripts de encerramento começam a ser executados quando o Compute Engine define o estado da instância como
STOPPING
. Seus scripts devem ser concluídos antes que a instância seja totalmente interrompida, que é quando seu estado muda paraTERMINATED
. O tempo que a instância leva para atingir o estadoTERMINATED
varia dependendo do tipo de instância .Se os scripts demorarem mais do que o tempo necessário para a instância ser interrompida, o Compute Engine interromperá os scripts à força, o que poderá levar à perda de dados ou a tarefas incompletas. Para evitar isso, interrompa a instância no sistema operacional convidado . Essa abordagem mantém o estado da instância como
STOPPING
até que os scripts de desligamento terminem de ser executados.Use um script de desligamento local
Um script de desligamento local é um script que fica no seu computador local. Transmita um script de desligamento local como um arquivo ou forneça o conteúdo diretamente ao Compute Engine.
Os scripts de desligamento podem executar quantas ações forem necessárias, mas se você estiver transmitindo o arquivo localmente, seu script não poderá exceder o limite de comprimento do valor de metadados de 256 KB. Para usar um script que exceda o limite de comprimento, armazene o arquivo no Cloud Storage. Consulte Usar script de desligamento do Cloud Storage para obter mais informações.
Forneça um arquivo de script de desligamento
Você só pode transmitir um arquivo de script de desligamento local por meio da ferramenta de linha de comando
gcloud
.gcloud
Para passar um arquivo de script de desligamento local, forneça o sinalizador
--metadata-from-file
, seguido por um par de chaves de metadados,shutdown-script=PATH/TO/FILE
, ondePATH/TO/FILE
é um caminho relativo para o script de desligamento. Por exemplo:gcloud compute instances create example-instance \ --metadata-from-file shutdown-script=examples/scripts/install.sh
Terraforma
Para especificar um script de desligamento diretamente, use o recurso
google_compute_instance
com o caminho para o script de desligamento nos metadados.Forneça o conteúdo do script de desligamento diretamente
Como alternativa, você pode passar diretamente o conteúdo do seu script de desligamento.
Console
No console do Google Cloud, especifique um script de desligamento diretamente usando a chave de metadados
shutdown-script
:gcloud
Usando a CLI do Google Cloud, use a sinalização
--metadata
para fornecer o conteúdo do seu script de desligamento, seguido pelo par de chavesshutdown-script=CONTENTS
, ondeCONTENTS
é o conteúdo do seu script de desligamento.gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash > # Shuts down Apache server > /etc/init.d/apache2 stop"
Terraforma
Para especificar um script de desligamento diretamente, use o recurso
google_compute_instance
com o script de desligamento nos metadados.DESCANSAR
Na API, forneça um script de desligamento como parte da propriedade de metadados em sua solicitação ao criar uma instância. Use
shutdown-script
como 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 desligamento em instâncias do Windows
Execute scripts de encerramento em instâncias do Windows usando as seguintes chaves de metadados específicas do Windows. Escolha uma das chaves especializadas listadas abaixo. Cada chave deve corresponder ao tipo de script que você deseja executar.
Você pode especificar vários scripts de desligamento passando chaves diferentes para sua instância, mas cada chave só pode ser especificada uma vez por máquina virtual.
As chaves a seguir podem ser usadas com um script de desligamento local, usando as mesmas instruções acima.
scripts de desligamento cmd
scripts de desligamento bat
scripts de desligamento ps1
windows-shutdown-script-cmd
windows-shutdown-script-bat
windows-shutdown-script-ps1
Use um script de desligamento do Cloud Storage
Você pode armazenar e usar um script de desligamento do Cloud Storage. Siga as instruções na documentação dos scripts de inicialização , mas substitua
startup-script-url
porshutdown-script-url
.Para instâncias do Windows, substitua
windows-startup-script-url
porwindows-shutdown-script-url
.Aplicar um script de encerramento às 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 Aplicando um script de inicialização a instâncias em execução, mas substitua as chaves de metadados por uma das seguintes chaves:
Visualizando a saída de um script de desligamento
Linux
Você pode visualizar a saída de um script de desligamento do Linux seguindo um destes procedimentos:
Windows
Visualize a saída de um script de desligamento do Windows Server usando qualquer um dos seguintes procedimentos e verificando eventos
GCEMetadataScripts
: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-04-21 UTC.
-
Terraform
Para usar os exemplos do Terraform nesta página em um ambiente de desenvolvimento local, instale e inicialize a gcloud CLI e, em seguida, configure o Application Default Credentials com suas credenciais de usuário.
Confira mais informações em Set up authentication for a local development environment.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Permissões necessárias para esta tarefa
Para executar esta tarefa, você deve ter as seguintes permissões :
Especificações
As seções a seguir descrevem as especificações para scripts de desligamento.
Limitações
Existem algumas limitações a serem observadas ao usar scripts de desligamento:
Invocação de script de desligamento
Os scripts de encerramento são acionados quando a instância é encerrada após qualquer um dos seguintes eventos:
Um script de desligamento pode ser de qualquer tipo de arquivo. Se houver um script de desligamento presente na instância, o Compute Engine fará o seguinte:
Você poderia, por exemplo, fornecer um script Python em vez de um script bash. Lembre-se de 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 no topo do arquivo para que o sistema operacional saiba qual interpretador usar. Por exemplo, para um script Python, você pode adicionar uma linha shebang como:
#!/usr/bin/python
Tempo de execução do script de desligamento
Os scripts de encerramento começam a ser executados quando o Compute Engine define o estado da instância como
STOPPING
. Seus scripts devem ser concluídos antes que a instância seja totalmente interrompida, que é quando seu estado muda paraTERMINATED
. O tempo que a instância leva para atingir o estadoTERMINATED
varia dependendo do tipo de instância .Se os scripts demorarem mais do que o tempo necessário para a instância ser interrompida, o Compute Engine interromperá os scripts à força, o que poderá levar à perda de dados ou a tarefas incompletas. Para evitar isso, interrompa a instância no sistema operacional convidado . Essa abordagem mantém o estado da instância como
STOPPING
até que os scripts de desligamento terminem de ser executados.Use um script de desligamento local
Um script de desligamento local é um script que fica no seu computador local. Transmita um script de desligamento local como um arquivo ou forneça o conteúdo diretamente ao Compute Engine.
Os scripts de desligamento podem executar quantas ações forem necessárias, mas se você estiver transmitindo o arquivo localmente, seu script não poderá exceder o limite de comprimento do valor de metadados de 256 KB. Para usar um script que exceda o limite de comprimento, armazene o arquivo no Cloud Storage. Consulte Usar script de desligamento do Cloud Storage para obter mais informações.
Forneça um arquivo de script de desligamento
Você só pode transmitir um arquivo de script de desligamento local por meio da ferramenta de linha de comando
gcloud
.gcloud
Para passar um arquivo de script de desligamento local, forneça o sinalizador
--metadata-from-file
, seguido por um par de chaves de metadados,shutdown-script=PATH/TO/FILE
, ondePATH/TO/FILE
é um caminho relativo para o script de desligamento. Por exemplo:gcloud compute instances create example-instance \ --metadata-from-file shutdown-script=examples/scripts/install.sh
Terraforma
Para especificar um script de desligamento diretamente, use o recurso
google_compute_instance
com o caminho para o script de desligamento nos metadados.Forneça o conteúdo do script de desligamento diretamente
Como alternativa, você pode passar diretamente o conteúdo do seu script de desligamento.
Console
No console do Google Cloud, especifique um script de desligamento diretamente usando a chave de metadados
shutdown-script
:gcloud
Usando a CLI do Google Cloud, use a sinalização
--metadata
para fornecer o conteúdo do seu script de desligamento, seguido pelo par de chavesshutdown-script=CONTENTS
, ondeCONTENTS
é o conteúdo do seu script de desligamento.gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash > # Shuts down Apache server > /etc/init.d/apache2 stop"
Terraforma
Para especificar um script de desligamento diretamente, use o recurso
google_compute_instance
com o script de desligamento nos metadados.DESCANSAR
Na API, forneça um script de desligamento como parte da propriedade de metadados em sua solicitação ao criar uma instância. Use
shutdown-script
como 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 desligamento em instâncias do Windows
Execute scripts de encerramento em instâncias do Windows usando as seguintes chaves de metadados específicas do Windows. Escolha uma das chaves especializadas listadas abaixo. Cada chave deve corresponder ao tipo de script que você deseja executar.
Você pode especificar vários scripts de desligamento passando chaves diferentes para sua instância, mas cada chave só pode ser especificada uma vez por máquina virtual.
As chaves a seguir podem ser usadas com um script de desligamento local, usando as mesmas instruções acima.
scripts de desligamento cmd
scripts de desligamento bat
scripts de desligamento ps1
windows-shutdown-script-cmd
windows-shutdown-script-bat
windows-shutdown-script-ps1
Use um script de desligamento do Cloud Storage
Você pode armazenar e usar um script de desligamento do Cloud Storage. Siga as instruções na documentação dos scripts de inicialização , mas substitua
startup-script-url
porshutdown-script-url
.Para instâncias do Windows, substitua
windows-startup-script-url
porwindows-shutdown-script-url
.Aplicar um script de encerramento às 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 Aplicando um script de inicialização a instâncias em execução, mas substitua as chaves de metadados por uma das seguintes chaves:
Visualizando a saída de um script de desligamento
,Linux
Você pode visualizar a saída de um script de desligamento do Linux seguindo um destes procedimentos:
Windows
Visualize a saída de um script de desligamento do Windows Server usando qualquer um dos seguintes procedimentos e verificando eventos
GCEMetadataScripts
:
Crie e execute scripts de desligamento que executam comandos logo antes de uma instância de máquina virtual (VM) ser interrompida ou reiniciada. Isso é útil se você depende de scripts automatizados para iniciar e encerrar instâncias, permitindo que as instâncias tenham tempo para limpar ou executar tarefas, como exportar logs ou sincronizar com outros sistemas.
Os scripts de desligamento são especialmente úteis para VMs em um grupo de instâncias gerenciadas com um escalonador automático . Se o escalonador automático encerrar uma VM no grupo, o script de desligamento será executado antes da VM parar e o script de desligamento executará quaisquer ações que você definir. O script é executado durante o período de desligamento limitado antes da parada da VM. Por exemplo, seu script de encerramento pode copiar dados processados para o Cloud Storage ou fazer backup de registros.
Os scripts de desligamento funcionam de maneira muito semelhante aos scripts de inicialização. Grande parte da documentação para scripts de inicialização também se aplica a scripts de desligamento.
Para tarefas de desligamento e reinicialização, as VMs sempre executam scripts de desligamento da seguinte forma:
Antes de começar
-