Serviço Systemd desejado por vários destinos

5

Existe uma maneira de tornar um serviço desejado por vários destinos (ou ter várias diretivas de instalação) para que, quando instalado, um link simbólico seja criado em todos os locais.

Meu exemplo é o seguinte arquivo systemd

[Unit]
Description=Run script to fix-audio mappings

[Service]
Type=forking
ExecStart=/bin/bash -c '/usr/local/bin/fix-audio &'
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

O que isto faz é executar um script para corrigir os mapeamentos de áudio para a minha máquina (sem o som só vem do subwoofer - que é bastante inútil). Infelizmente, depois de dormir / suspender / hibernar, os mapeamentos parecem redefinir, portanto, também preciso que esse script seja acionado ao acordar.

Existe uma maneira de dizer WantedBy=multi-user.target,sleep.target ou similar?

Não consigo encontrar nenhuma documentação sobre isso. Alternativamente, existe uma maneira melhor de conseguir o que eu preciso?

    
por flungo 10.05.2015 / 09:56

1 resposta

6

Sim, citando a seção relevante da página man do system.unit :

WantedBy=, RequiredBy= This option may be used more than once, or a space-separated list of unit names may be given. A symbolic link is created in the .wants/ or .requires/ directory of each of the listed units when this unit is installed by systemctl enable. This has the effect that a dependency of type Wants= or Requires= is added from the listed unit to the current unit. The primary result is that the current unit will be started when the listed unit is started. See the description of Wants= and Requires= in the [Unit] section for details.

WantedBy=foo.service in a service bar.service is mostly equivalent to Alias=foo.service.wants/bar.service in the same file. In case of template units, systemctl enable must be called with an instance name, and this instance will be added to the .wants/ or .requires/ list of the listed unit. E.g. WantedBy=getty.target in a service [email protected] will result in systemctl enable [email protected] creating a getty.target.wants/[email protected] link to [email protected].

Embora se você quiser executar isso para vários destinos, certifique-se de ajustar a ordem, se necessário (por exemplo, para desligamento ou suspensão) através das diretivas Before= ou After= (que também são explicadas na página man;)). / p>     

por 10.05.2015 / 20:20