Como executar scripts e comandos em suspender e retomar no Linux

A melhor maneira de executar scripts e comandos em suspender e retomar no Linux antes de suspender (ou após retomar) é usar o sistema systemd init. Isso se deve ao fato de que o sistema init interage diretamente com o kernel e os sistemas de energia. Aprender a trabalhar com esta ferramenta permitirá que qualquer usuário ganhe muito controle sobre seu sistema operacional Linux,

Por favor, entenda que mexer no sistema init do seu PC pode ser perigoso se você não souber o que está fazendo. Certifique-se de seguir as instruções deste tutorial o mais próximo possível, para evitar possíveis contratempos.

Nem toda distribuição Linux moderna suporta o sistema systemd init. Alguns usam upstart ou algo completamente diferente. Neste tutorial, focaremos no systemd, pois é o sistema de iniciação mais comum. Se você deseja realizar essa tarefa em algo que não executa o que abordamos neste artigo, considere consultar o manual do seu sistema operacional para obter instruções.

Nota: Os usuários Debian devem substituir todas as instâncias de usr/lib/systemd/system-sleep por /lib/systemd/system-sleep/

Executando um comando antes de suspender

Para executar um script antes de suspender, coloque qualquer arquivo de script bash no diretório /usr/lib/systemd/system-sleep/. Os próprios scripts podem fazer qualquer coisa, mas há uma certa sintaxe que deve ser seguida. Comece abrindo uma janela de terminal. Usando sudo -s, ganhe um shell de root.

  Como jogar DOOM clássico no Linux com o Doomsday Engine

Em seguida, suba o editor de texto nano dentro do diretório system-sleep:

nano /usr/lib/systemd/system-sleep/pre-suspend.sh

Adicione o shebang ao início do script. Adicionar isso é crítico e, sem isso, o interpretador não poderá ler corretamente o código e os comandos.

#!/bin/bash/

A próxima parte do script é o “se”. Isso dirá ao sistema de controle de energia que “se” o sistema estiver prestes a ser suspenso para suspensão, algo deve acontecer. Cole o código abaixo:

if [ "${1}" == "pre" ]; then
sh /path/to/script/to/run.sh

Altere sh /path/to/script/to/run.sh no script para o que você gostaria de executar em seu PC Linux (ou servidor) logo antes de o sistema ser suspenso para suspensão. Tenha em mente que a linha diretamente após “if” não precisa ser sh /path/to/script/to/run.sh. Você também pode usar isso para executar vários comandos. Enquanto o bash puder reconhecê-lo como um comando, ele será executado.

  Como jogar The Witness no Linux

A última parte do script “antes de suspender” é adicionar a parte “else if”. Esse aspecto do script não precisa ser modificado, pois, neste exemplo, estamos preocupados em fazer algo antes que o sistema fique inativo, e não quando ele acordar novamente.

elif [ "${1}" == "post" ]; then
# nothing goes here
fi

Quando tudo tiver sido adicionado ao arquivo, pressione Ctrl + O para salvar o nano.

Executando um comando após retomar

A execução de um comando após a retomada funciona como executar algo antes de suspender. A única diferença real é que, em vez de adicionar um comando após a parte “if” do script, você faria a parte mais importante do código ocorrer após a linha “elif”.

Para fazer um script pós-currículo, primeiro, adicione o shebang como a primeira linha.

#!bin/bash

Na próxima linha, adicione a parte “if” do script.

if [ "${1}" == "pre" ]; then
# nothing goes here

Com esse pedaço de código colado no script bash, desça e cole a seção “else if”.

elif [ "${1}" == "post" ]; then
sh /path/to/script/to/run.sh
fi

Mais uma vez, não há problema em escrever qualquer coisa sob a linha “elif”. Contanto que seja uma operação de comando normal, o systemd e o bash o executarão.

  Como acessar um computador Linux remoto de um iPad

Executando comandos na inicialização e retomada

Se você quiser executar dois comandos opostos; um antes de suspender, e um no recomeço, é possível. Significa apenas personalizar o script e adicionar linhas tanto na linha ‘if’ quanto na linha ‘elseif’.

Como de costume, comece postando o shebang no script para o intérprete.

#!/bin/bash

Em seguida, cole a seção if do código.

if [ "${1}" == "pre" ]; then
# replace with command

Em if, substitua “# replace with command” por qualquer comando que você gostaria de executar logo antes de o sistema cair. Em seguida, vá para a seção “elif” e faça o mesmo.

elif [ "${1}" == "post" ]; then
#  replace with command
fi

Salve o arquivo com Ctrl + O,

Atualizando permissões e usando o script

Todos os comandos necessários estão dentro do arquivo de script, mas antes que ele possa ser executado, você precisará atualizar as permissões. Abra um terminal e ganhe root com: su ou sudo -s. Então faça:

chmod +x /usr/lib/systemd/system-sleep/pre-suspend.sh

A partir de agora, sempre que você suspender ou retomar, comandos personalizados dentro do script deverão ser executados.

Nota: tem dúvidas sobre systemd system-sleep? Verifique o manual com man systemd-suspend.service.