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/
últimas postagens
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.
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.
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.
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.