# trigger-poweroff.service
[Unit]
DefaultDependencies=no
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl --no-block poweroff
DefaultDependencies=no evita um Conflicts=shutdown.target implícito. Isso significa que não importa se o serviço é iniciado com o modo de trabalho replace-irreversible . Também evita um Wants=sysinit.target implícito; isto seria inferior ao ideal, por ex. se você quisesse iniciar este serviço após a transição para emergency.target .
Before=shutdown.target garante que o serviço termine antes que o desligamento do systemd comece a enviar sinais. Se nada mais, isso torna a unidade mais simples para analisar a correção. Evitamos um impasse certificando-nos de que o serviço também não espere que o desligamento seja concluído.
Não importa se systemd-shutdown matou o processo systemctl com SIGTERM. O processo simplesmente terminaria com o status WIFSIGNAL e um WTERMSIG de SIGTERM . O Systemd trata isso como uma saída limpa e bem-sucedida. Veja a definição de SuccessExitStatus em man systemd.exec . No entanto, se o kernel misteriosamente não agendou essa saída inicial antes do systemd DEFAULT_TIMEOUT_USEC , o systemd-shutdown enviaria o sinal não bloqueado SIGKILL. Systemd não trataria isso como uma saída bem-sucedida.