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