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
.shpara 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 comandossystemctlporservice. 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
apache2emysqlpelos 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:
- Abra o crontab:
crontab -e
- 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:
- Minuto (0 – 59)
- Hora (0 – 23)
- Dia do mês (1 – 31)
- Mês (1 – 12)
- 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

Leave a comment