systemd: como habilitar um serviço automaticamente a partir da primeira inicialização?

0

Estou usando o systemd para lidar com algumas tarefas e tenho um arquivo de serviço que funciona bem quando ativado com systemctl .

Agora, gostaria de ativá-lo automaticamente a partir da primeira inicialização.

Eu sei que colocar um arquivo de substituição em /etc/systemd/system/ substitui o comportamento do arquivo com o mesmo nome em /lib/systemd/system/ .

Existe uma maneira de ativar um arquivo de serviço automaticamente apenas para colocá-lo em algum diretório?

    
por simozz 28.01.2016 / 17:43

3 respostas

1

sudo systemctl enable <service-name> ativará o serviço no momento da inicialização.

link tem uma lista de comandos úteis. E sempre há man systemctl e man systemd .

    
por 28.01.2016 / 18:33
0

Você pode usar systems.preset para unidades ativadas padrão.

Systems.preset permite configurar o conjunto de unidades a serem ativadas / desativadas

vendor preset em systemctl status unit refere-se a isso.

Para mais informações sobre como usar isso, consulte a página de manual vinculada

    
por 14.02.2017 / 16:41
0

IMPORTANT NOTE: The following works for me under Ubuntu. It should work as is under Debian. RPM based distros prevent the auto-start by default, but it may still get your closer to your goal.

Na maioria dos casos, você deseja instalá-lo na multi-user.target usando a seção de instalação da seguinte forma:

[Install]
WantedBy=multi-user.target

Isso significa que o script your-package.postinst iniciará automaticamente o daemon para você.

Note que se você tiver seu próprio script your-package.postinst , você deve incluir o ajudante Debian como em:

#!/bin/sh

#DEBHELPER#

...your own script here...

Sem o padrão #DEBHELPER# , o empacotador não adicionará o código padrão e, como resultado, seu daemon não será ativado e iniciado automaticamente. O código adicionado irá ativar e iniciar o serviço:

systemctl enable <service-name>
systemctl start <service-name>

a menos que o serviço seja static (não tem uma seção [Install] conforme mostrado acima.) Um serviço estático requer que uma linha de comando especial seja ativada e que não está disponível por padrão:

systemctl add-wants multi-user.target <service-name>

Como podemos ver, o comando inclui multi-user.target , que o padrão #DEBHELPER# (systemd, na verdade) não tem nenhuma pista a menos que você tenha uma seção [Install] .

O pacote também deve ser criado com a extensão systemd . Isso significa ter o seguinte no seu arquivo debian/rules :

%:
    dh $@ --with systemd --parallel

Isso deve prepará-lo.

    
por 23.08.2018 / 20:44

Tags