- - Como executar scripts e comandos ao suspender e continuar no Linux

Como executar scripts e comandos ao suspender e continuar no Linux

A melhor maneira de executar scripts e comandos nosuspender e continuar no Linux antes de suspender (ou após continuar) é usar o sistema systemd init. Isso ocorre porque o sistema init interage diretamente com o kernel e os sistemas de energia. Aprender a trabalhar com essa ferramenta permitirá que qualquer usuário obtenha muito controle sobre o sistema operacional Linux,

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

Nem toda distribuição moderna do Linux suporta osystemd sistema 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 esta tarefa em algo que não é executado no que abordamos neste artigo, considere consultar o manual do sistema operacional para obter instruções.

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

Executando um comando antes de suspender

Para executar um script antes da suspensão, coloque qualquer arquivo de script bash no diretório / usr / lib / systemd / system-sleep / diretório. Os scripts em si podem fazer qualquer coisa, mas há uma certa sintaxe que deve ser respeitada. Comece abrindo uma janela do terminal. Usando sudo -s, obtenha um shell raiz.

Em seguida, instale 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 é essencial e, sem ele, o intérprete não poderá ler corretamente o código e os comandos.

#!/bin/bash/

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

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

mudança sh /path/to/script/to/run.sh no script para o que você deseja executar no seu PC (ou servidor) Linux imediatamente antes do sistema ficar suspenso. Lembre-se de que a linha diretamente após "se" 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 da suspensão" é adicionar a parte "else if". Esse aspecto do script não precisa ser modificado, pois, neste exemplo, estamos preocupados em fazer algo antes o sistema falha e não quando ele volta a funcionar.

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

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

Executando um comando após retomar

A execução de um comando após o resumo funciona da mesma forma queexecutando algo antes de suspender. A única diferença real é que, em vez de adicionar um comando após a parte "se" do script, você fará com que a parte mais importante do código ocorra após a linha "elif".

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

#!bin/bash

Na próxima linha, adicione a parte "se" do script.

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

Com esse pedaço de código colado no script bash, mova para baixo 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". Desde que seja uma operação de comando normal, systemd e o bash o executam.

Executando comandos na inicialização e no currículo

Se você deseja executar dois comandos opostos, 1antes de suspender e um no currículo, é possível. Significa apenas personalizar o script e adicionar linhas sob a linha ‘se”, bem como a linha "elseif".

Como de costume, comece publicando o shebang no script do intérprete.

#!/bin/bash

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

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

Em if, substitua "# replace by command" pelo comando que você deseja executar 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 obtenha 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 continuar, comandos personalizados dentro do script deverão ser executados.

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

Comentários