Executar um script na inicialização do Debian 12

Estou tendo dificuldade para executar um script na inicialização do Debian 12. Estou querendo compartilhar a internet em uma pequena rede de laboratório.
Já fiz o .sh e o tornei executável com o chmod +x. Executando manualmente vai beleza, mas quero que seja executado na inicialização do SO.
Segui vários tutoriais, mas não tive sucesso. Tentei criar um serviço com o executável, mas não estou tendo um resultado positivo.
Segue abaixo a reposta que recebo quando peço o status:

○ compartilhar_internet.service
     Loaded: loaded (/lib/systemd/system/compartilhar_internet.service; enabled; preset: enabled)
     Active: inactive (dead) since Fri 2023-09-08 18:50:26 -04; 7s ago
   Duration: 5ms
    Process: 6374 ExecStart=/etc/init.d/compartilhar_internet.sh (code=exited, status=0/SUCCESS)
   Main PID: 6374 (code=exited, status=0/SUCCESS)
        CPU: 5ms

set 08 18:50:26 srv-router-01 systemd[1]: Started compartilhar_internet.service.
set 08 18:50:26 srv-router-01 systemd[1]: compartilhar_internet.service: Deactivated successfully.

Se alguém puder ajudar ficaria muito grato.

1 curtida

Você precisa criar um arquivo Unit para a inicialização do seu script.

Antes de qualquer coisa remova o arquivo que você criou em /lib/systemd/system/compartilhar_internet.service não é o lugar indicado para arquivos criado pelo usuário.

Crie um arquivo compartilhar_internet.service em /etc/systemd/system/
e add as seguintes informações:

[Unit]
Description=Compartilhar Internet
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/etc/init.d/compartilhar_internet.sh start
ExecStop=/etc/init.d/compartilhar_internet.sh stop
ExecReload=/etc/init.d/compartilhar_internet.sh restart
[Install]
WantedBy=multi-user.target

no terminal
systemctl daemon-reload → para atualizar/carregar o arquivo que voce criou
systemctl enable compartilhar_internet.service → para habilitar o o script na inicialização do sistema.

Seu script esta habilitado para iniciar e também os seguintes atributos:
systemctl start compartilhar_internet.service
systemctl status compartilhar_internet.service
systemctl stop compartilhar_internet.service
systemctl restart compartilhar_internet.service

Reinicie o PC.
Apos o reinicio execute systemctl status compartilhar_internet.service para ver se esta OK.

2 curtidas

Bom dia Tiago!

Muito obrigado, funcionou belezinha!

Já acrescentei nas minhas anotações.

Uma outra opção se usar o bash, os scripts .sh que colocar nessa pasta abaixo serão executados no login

/etc/profile.d

Muito obrigado pela sugestão!

Vou experimentar também essa opção.

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.