Como Criar um Script para Iniciar e Parar Serviços no Linux (Apache e MySQL)

Se você trabalha com servidores Linux, é comum precisar iniciar ou parar serviços como Apache e MySQL frequentemente. Em vez de executar comandos manualmente, podemos automatizar essa tarefa com um script shell (.sh). Neste tutorial, vamos mostrar como criar um script simples para ligar e desligar esses serviços de forma prática, usando o systemctl ou service.

O que você vai aprender:

  • Criar um script .sh para gerenciar serviços no Linux
  • Configurar permissões adequadas no script
  • Executar o script para iniciar ou parar serviços como Apache e MySQL

Pré-requisitos:

  • Acesso root (ou privilégios sudo)
  • Familiaridade com o terminal do Linux
  • Servidor Apache e MySQL instalados no sistema

1. Criando o Script Shell

Vamos criar um arquivo shell para automatizar o controle dos serviços Apache e MySQL. O script aceitará um parâmetro (start ou stop) e ligará ou desligará os serviços conforme a necessidade.

Passo 1: Criar o arquivo .sh

Primeiro, crie um arquivo de script em qualquer diretório (vamos usar /home/user/scripts/ como exemplo):

cd /home/user/scripts/
nano control_services.sh

Passo 2: Escrever o conteúdo do script

Cole o código abaixo no editor de texto. Esse script define comandos para iniciar e parar os serviços Apache e MySQL usando o systemctl:

#!/bin/bash

# Função para exibir o uso correto do script
usage() {
    echo "Usage: $0 {start|stop}"
    exit 1
}

# Verifica se o argumento correto foi passado
if [ "$#" -ne 1 ]; then
    usage
fi

# Inicia ou para os serviços com base no argumento fornecido
case "$1" in
    start)
        echo "Starting Apache and MySQL..."
        sudo systemctl start apache2
        sudo systemctl start mysql
        echo "Services started."
        ;;
    stop)
        echo "Stopping Apache and MySQL..."
        sudo systemctl stop apache2
        sudo systemctl stop mysql
        echo "Services stopped."
        ;;
    *)
        usage
        ;;
esac

Esse código define a estrutura básica de um script shell:

  • Se o usuário passar o argumento start, ele vai iniciar o Apache e o MySQL.
  • Se o argumento for stop, ele para os serviços.
  • Se nenhum ou um argumento inválido for passado, o script mostra como ele deve ser usado.

Passo 3: Salvar o arquivo

Após adicionar o código, salve o arquivo e saia do editor (Ctrl + X, depois Y para confirmar).

2. Tornando o Script Executável

Agora que o script está pronto, é necessário torná-lo executável. Isso é feito com o comando chmod:

chmod +x control_services.sh

Isso garante que você pode executar o script diretamente no terminal.

3. Executando o Script

Com o script pronto e configurado, é hora de testá-lo.

Passo 1: Iniciar os serviços

Para iniciar os serviços Apache e MySQL, use o seguinte comando:

./control_services.sh start

Você verá uma saída semelhante a esta:

Starting Apache and MySQL...
Services started.

Passo 2: Parar os serviços

Para parar os serviços, execute o comando:

./control_services.sh stop

A saída será:

Stopping Apache and MySQL...
Services stopped.

4. Possíveis Ajustes

  • Distribuições antigas: Se você estiver em uma distribuição mais antiga do Linux que não usa o systemctl, substitua os comandos systemctl por service. Exemplo:
  sudo service apache2 start
  sudo service mysql start
  • Outros serviços: Este script pode ser facilmente modificado para controlar outros serviços, basta trocar apache2 e mysql pelos nomes dos serviços desejados.

5. Automação adicional

Se você quiser automatizar o script ainda mais, pode criar um cron job que ligue e desligue os serviços em horários específicos, ou configurá-lo para rodar ao iniciar o sistema.

Exemplo de cron job para iniciar os serviços às 8:00 e parar às 20:00:

  1. Abra o crontab:
   crontab -e
  1. Adicione as seguintes linhas:
   0 8 * * * /home/user/scripts/control_services.sh start
   0 20 * * * /home/user/scripts/control_services.sh stop

Isso configurará o servidor para iniciar os serviços às 8:00 da manhã e parar às 20:00.

Como Configurar um Cron Job para Automação de Serviços no Linux

O cron é uma ferramenta poderosa no Linux que permite agendar tarefas para serem executadas automaticamente em horários específicos. Ele é amplamente utilizado para automação de manutenção do sistema, backups e, como veremos neste tutorial, para iniciar e parar serviços como Apache e MySQL.

Agora que já criamos o script control_services.sh, vamos explorar como configurá-lo para rodar automaticamente em horários pré-determinados usando o cron job.

O que é um Cron Job?

Um cron job é uma tarefa agendada para ser executada periodicamente no Linux. Ele é configurado usando o comando crontab e pode ser configurado para rodar em intervalos regulares, como por minuto, hora, dia ou semana.

Estrutura de um Cron Job

A sintaxe básica para um cron job é a seguinte:

* * * * * comando_a_ser_executado

Os cinco asteriscos representam, respectivamente:

  1. Minuto (0 – 59)
  2. Hora (0 – 23)
  3. Dia do mês (1 – 31)
  4. Mês (1 – 12)
  5. Dia da semana (0 – 6, onde 0 é domingo)

Por exemplo, para executar uma tarefa todo dia às 8:00 da manhã, a linha seria:

0 8 * * * comando_a_ser_executado

Agendando o Script para Ligar e Desligar Serviços

Agora que entendemos a estrutura básica de um cron job, vamos configurar o control_services.sh para iniciar os serviços Apache e MySQL às 8:00 da manhã e desligá-los às 20:00 da noite.

Passo 1: Editar o crontab

Para começar, abra o arquivo do crontab no editor padrão do sistema com o seguinte comando:

crontab -e

Isso abrirá o arquivo do crontab, onde você pode adicionar suas tarefas agendadas.

Passo 2: Adicionar as tarefas agendadas

Agora, vamos adicionar os cron jobs para o nosso script control_services.sh. Aqui estão as linhas que você deve adicionar para iniciar os serviços às 8:00 e desligá-los às 20:00:

0 8 * * * /home/user/scripts/control_services.sh start
0 20 * * * /home/user/scripts/control_services.sh stop

O que essas linhas fazem:

  • **0 8 * * ***: Significa “execute este comando às 8:00 da manhã, todos os dias”.
  • /home/user/scripts/control_services.sh start: Executa o script para iniciar os serviços Apache e MySQL.

A segunda linha:

  • **0 20 * * ***: Significa “execute este comando às 20:00 da noite, todos os dias”.
  • /home/user/scripts/control_services.sh stop: Executa o script para parar os serviços Apache e MySQL.

Passo 3: Salvar e sair

Depois de adicionar as linhas ao arquivo crontab, salve o arquivo (no caso do nano, use Ctrl + O para salvar e Ctrl + X para sair).

Verificando os Cron Jobs

Para verificar se seus cron jobs foram configurados corretamente, você pode listar todos os cron jobs do seu usuário com o comando:

crontab -l

Isso deve mostrar as duas linhas que você acabou de adicionar.

3. Como Verificar se o Cron Job Está Funcionando

Você pode verificar se o cron job foi executado corretamente de várias maneiras:

  • Logs do cron: No Ubuntu, você pode visualizar os logs do cron com o seguinte comando:
  grep CRON /var/log/syslog
  • Verificar o status dos serviços: Após o horário programado para o cron job, você pode verificar se os serviços Apache e MySQL estão rodando corretamente com o comando:
  systemctl status apache2
  systemctl status mysql

Se o cron job estiver funcionando, os serviços devem estar ativos às 8:00 e parados após as 20:00.

4. Agendamento Flexível com Cron

Se quiser mais flexibilidade, você pode ajustar os cron jobs para agendar o script em intervalos diferentes, como dias específicos da semana ou meses específicos.

Exemplos de Cron Jobs:

  • Executar somente nos dias de semana (segunda a sexta):
  0 8 * * 1-5 /home/user/scripts/control_services.sh start
  0 20 * * 1-5 /home/user/scripts/control_services.sh stop

Isso configuraria os serviços para iniciar às 8:00 e parar às 20:00 apenas de segunda a sexta-feira (dias da semana 1-5).

  • Executar somente no primeiro dia do mês:
  0 8 1 * * /home/user/scripts/control_services.sh start
  0 20 1 * * /home/user/scripts/control_services.sh stop

Nesse caso, o cron job será executado apenas no dia 1 de cada mês.

Conclusão

Criar um script shell para controlar serviços no Linux é uma maneira eficiente de economizar tempo e evitar erros manuais. Agora, você pode gerenciar facilmente o Apache e MySQL com um simples comando, ajustando o script conforme necessário para seu ambiente de trabalho.

Usar cron jobs para automatizar o controle de serviços no Linux é uma maneira poderosa de simplificar tarefas repetitivas. Neste tutorial, vimos como configurar um cron job para ligar e desligar os serviços Apache e MySQL automaticamente, além de como personalizar os horários para diferentes cenários.

Essa automação pode ser útil em muitos casos, como ambientes de desenvolvimento ou produção, onde serviços precisam estar disponíveis apenas em horários específicos. Se você quiser estender ainda mais esse conceito, pode aplicar a mesma lógica para controlar outros serviços ou até mesmo executar scripts de backup e monitoramento

Edvaldo Guimrães Filho Avatar

Published by

Categories:

Leave a comment