vmware.service trava durante o desligamento

1

No Arch Linux, desde algumas atualizações do sistema (infelizmente não sei dizer quais), vmware.service trava durante o desligamento / reinicialização.

Descobri que, se eu parar manualmente esse serviço ( systemctl stop vmware.service ) enquanto o gdm.service ainda estiver em execução (ou seja, no terminal do Gnome), o serviço será interrompido rapidamente e o desligamento será tão rápido quanto o esperado. Eu pesquisei e descobri que também no Fedora 21 há um problema semelhante e um usuário acabou migrando para o lightdm para consertar isso. Eu não quero mudar para o lightdm, então estou querendo saber se existe alguma maneira de dizer ao systemd para parar o vmware.service antes de parar o gdm.service . Ou se alguém tiver um workardound para isso ...

    
por lviggiani 21.05.2015 / 21:41

1 resposta

0

Certamente, existe um caminho. systemd suporta a especificação de "dependências de ordenação" entre pares de unidades que fazem com que systemd sigam uma certa ordem mútua quando essas unidades são ativadas / desativadas em uma única transação.

Em systemd.unit (5) :

Before=, After=

A space-separated list of unit names. Configures ordering dependencies between units. If a unit foo.service contains a setting Before=bar.service and both units are being started, bar.service's start-up is delayed until foo.service is started up. <...> Note that when two units with an ordering dependency between them are shut down, the inverse of the start-up order is applied. i.e. if a unit is configured with After= on another unit, the former is stopped before the latter if both are shut down. <...>

Então, você quer que vmware.service seja desativado (parado) antes que gdm.service seja interrompido. Pelo exposto, pode ser obtido adicionando uma dependência de ordem After=gdm.service à unidade vmware.service .

Para evitar a cópia de toda a unidade para /etc/systemd/system , você pode querer usar o mecanismo de drop-ins (veja" exemplo 2 "). Você precisa criar um arquivo chamado /etc/systemd/system/vmware.service.d/<some name>.conf apenas com as diretivas e cabeçalhos de seção necessários:

[Unit]
After=gdm.service

Depois de fazer isso, emita um comando systemctl daemon-reload para fazer systemd reler as unidades. No desligamento, a nova lista de dependências deve se tornar efetiva.

    
por 22.05.2015 / 04:31