Configurando ou criando um serviço no Ubuntu

Configurando ou criando um serviço no Ubuntu

Neste artigo, vamos abordar a configuração ou criação de um serviço para inicializar com o sistema Ubuntu Linux. Nele, inseriremos um script para montar o compartilhamento de uma máquina Windows. Isso será refeito toda vez que o Ubuntu for reiniciado. No tutorial, usaremos o editor de texto vim, mas sinta-se à vontade para usar o editor de sua preferência. Se preferir, temos um guia sobre os comandos do vim.

A partir do console do Ubuntu, use os seguintes comandos para criar o serviço e alterar sua permissão para se tornar um arquivo executável:

touch /etc/systemd/system/mapeamento.service
chmod 664 /etc/systemd/system/mapeamento.service

Após criar o serviço, você precisa editá-lo, inserindo o conteúdo abaixo:

vim /etc/systemd/system/mapeamento.service
[Unit]
After=network.service
[Service]
ExecStart=/usr/local/bin/mapeamento.sh
[Install]
WantedBy=default.target

Observação: na linha ExecStart, você deve colocar o caminho completo do script ou comando a ser executado.

Agora, vamos habilitar o serviço mapeamento.service:

cd /etc/systemd/system/
systemctl daemon-reload
systemctl enable /etc/systemd/system/mapeamento.service

Como último passo, você precisará criar o script shell e atribuir as permissões necessárias:

touch /usr/local/bin/mapeamento.sh
chmod 744 /usr/local/bin/mapeamento.sh

Depois, é necessário editá-lo com o comando abaixo:

vim /usr/local/bin/mapeamento.sh

E, em seguida, insira o conteúdo do script abaixo:

#!/bin/bash

mount -t cifs -o vers=1.0,_netdev,username=user,password=pass,uid=1000,gid=1000
//192.168.x.x/mapeamento01 /mnt/mapeamento01

mount -t cifs -o vers=1.0,_netdev,username=user,password=pass,uid=1000,gid=1000
//192.168.x.x/mapeamento02 /mnt/mapeamento02

No conteúdo acima, o compartilhamento existente de um host Windows está sendo montado e apresentado nos diretórios /mnt/mapeamento01 e /mnt/mapeamento02.

E, finalmente, crie os seguintes diretórios para receber os mapeamentos.

mkdir /mnt/mapeamento01
mkdir /mnt/mapeamento02

Como verificar o status do serviço?

Para verificar o status de um serviço no Ubuntu, você pode usar o comando systemctl. Aqui está um exemplo de como você pode fazer isso:

systemctl status nome_do_serviço

Substitua nome_do_serviço pelo nome do serviço que você deseja verificar. Este comando irá exibir o status atual do serviço, incluindo se ele está ativo, inativo ou se falhou ao iniciar. Além disso, ele fornecerá informações sobre o processo, como o PID e a memória usada. Se o serviço estiver ativo, ele também mostrará há quanto tempo está em execução.

Por exemplo, para verificar o status do serviço mapeamento.service que mencionamos anteriormente, você usaria o seguinte comando:

systemctl status mapeamento.service

Como habilitar um serviço para iniciar na inicialização?

Para habilitar um serviço para iniciar na inicialização no Ubuntu, você pode usar o comando systemctl. Aqui está um exemplo de como você pode fazer isso:

systemctl enable nome_do_serviço

Substitua nome_do_serviço pelo nome do serviço que você deseja habilitar. Este comando irá criar os links simbólicos necessários para que o serviço seja iniciado durante o processo de inicialização do sistema.

Por exemplo, para habilitar o serviço mapeamento.service que mencionamos anteriormente, você usaria o seguinte comando:

systemctl enable mapeamento.service

Isso fará com que o serviço mapeamento.service seja iniciado automaticamente na próxima vez que o sistema for inicializado. Se você quiser que o serviço comece imediatamente, você pode usar o comando systemctl start nome_do_serviço. Por exemplo:

systemctl start mapeamento.service

Isso iniciará o serviço mapeamento.service imediatamente, sem precisar reiniciar o sistema. Lembre-se de que você precisará de privilégios de superusuário para executar esses comandos, então você pode precisar usar sudo se não estiver logado como root. Por exemplo:

sudo systemctl enable mapeamento.service
sudo systemctl start mapeamento.service

Como desabilitar um serviço para iniciar na inicialização?

Para desabilitar um serviço para iniciar na inicialização no Ubuntu, você pode usar o comando systemctl. Aqui está um exemplo de como você pode fazer isso:

systemctl disable nome_do_serviço

Substitua nome_do_serviço pelo nome do serviço que você deseja desabilitar. Este comando irá remover os links simbólicos que foram criados quando o serviço foi habilitado, impedindo que o serviço seja iniciado durante o processo de inicialização do sistema.

Por exemplo, para desabilitar o serviço mapeamento.service que mencionamos anteriormente, você usaria o seguinte comando:

systemctl disable mapeamento.service

Isso fará com que o serviço mapeamento.service não seja iniciado automaticamente na próxima vez que o sistema for inicializado. Se você quiser parar o serviço imediatamente, você pode usar o comando systemctl stop nome_do_serviço. Por exemplo:

systemctl stop mapeamento.service

Isso parará o serviço mapeamento.service imediatamente, sem precisar reiniciar o sistema. Lembre-se de que você precisará de privilégios de superusuário para executar esses comandos, então você pode precisar usar sudo se não estiver logado como root. Por exemplo:

sudo systemctl disable mapeamento.service
sudo systemctl stop mapeamento.service

Qual a diferença entre desabilitar e parar um serviço no systemd?

No systemd, que é o sistema de inicialização usado por muitas distribuições Linux modernas, os comandos stop e disable têm funções diferentes:

  • Parar (stop) um serviço: Este comando interrompe imediatamente um serviço que está atualmente em execução. No entanto, isso não impede que o serviço seja iniciado novamente automaticamente na próxima vez que o sistema for inicializado. Em outras palavras, se um serviço foi configurado para iniciar na inicialização do sistema, o comando stop não alterará essa configuração.
  • Desabilitar (disable) um serviço: Este comando impede que um serviço seja iniciado automaticamente na inicialização do sistema. No entanto, isso não afeta a capacidade de iniciar o serviço manualmente usando o comando start. Além disso, se o serviço já estiver em execução no momento em que o comando disable for emitido, ele não será interrompido.

Em resumo, o comando stop é usado para interromper um serviço em execução, enquanto o comando disable é usado para impedir que um serviço inicie automaticamente na inicialização do sistema. Ambos os comandos são úteis para gerenciar serviços no systemd, mas têm propósitos diferentes. Lembre-se de que você precisará de privilégios de superusuário para executar esses comandos, então você pode precisar usar sudo se não estiver logado como root. Por exemplo:

sudo systemctl stop nome_do_serviço
sudo systemctl disable nome_do_serviço

Como verificar os serviços ativos no sistema?

Para verificar os serviços ativos no sistema Ubuntu, você pode usar o comando systemctl. Aqui está um exemplo de como você pode fazer isso:

systemctl --type=service --state=running

Este comando irá listar todos os serviços que estão atualmente em execução no sistema. Cada linha da saída representa um serviço diferente, e você pode ver o status de cada serviço (por exemplo, “running” para serviços em execução) na coluna “ACTIVE”.

Se você quiser ver todos os serviços, independentemente de estarem em execução ou não, você pode usar o comando systemctl sem opções adicionais:

systemctl --type=service

Este comando irá listar todos os serviços conhecidos pelo systemd, juntamente com o seu status atual. Lembre-se de que você precisará de privilégios de superusuário para executar esses comandos, então você pode precisar usar sudo se não estiver logado como root. Por exemplo:

sudo systemctl --type=service --state=running
sudo systemctl --type=service

Conclusão

A implementação de um serviço para inicializar com o sistema Ubuntu, como demonstrado neste tutorial, é uma tarefa essencial para muitos administradores de sistemas e desenvolvedores. Isso permite que certas funcionalidades do sistema sejam automaticamente ativadas sempre que o sistema for reiniciado, economizando tempo e esforço manual.

Neste caso específico, o script mapeamento.sh será executado toda vez que o sistema Ubuntu for reiniciado. Isso significa que o mapeamento de rede que foi configurado será automaticamente remontado, eliminando a necessidade de realizar essa tarefa manualmente cada vez que o sistema for inicializado. Isso é particularmente útil em ambientes onde a máquina Ubuntu precisa acessar regularmente recursos compartilhados em uma máquina Windows.

Além disso, a habilidade de criar e gerenciar serviços é uma habilidade valiosa que pode ser aplicada a uma variedade de situações. Por exemplo, você pode configurar serviços para executar backups regulares, atualizar software ou realizar outras tarefas de manutenção do sistema.

Em resumo, a capacidade de configurar um serviço para iniciar na inicialização do sistema é uma ferramenta poderosa na caixa de ferramentas de qualquer administrador de sistemas ou desenvolvedor. Com a prática e o entendimento dos conceitos apresentados neste tutorial, você estará bem equipado para aproveitar essa funcionalidade em seus próprios projetos e ambientes de trabalho.