When queuing a new job, this option controls how to deal with already queued jobs. It takes one of "fail", "replace", "replace-irreversibly", "isolate", "ignore-dependencies", "ignore-requirements" or "flush". Defaults to "replace", except when the isolate command is used which implies the "isolate" job mode.
If "fail" is specified and a requested operation conflicts with a pending job (more specifically: causes an already pending start job to be reversed into a stop job or vice versa), cause the operation to fail.
If "replace" (the default) is specified, any conflicting pending job will be replaced, as necessary.
If "replace-irreversibly" is specified, operate like "replace", but also mark the new jobs as irreversible. This prevents future conflicting transactions from replacing these jobs (or even being enqueued while the irreversible jobs are still pending). Irreversible jobs can still be cancelled using the cancel command.
Isto sugere um efeito prático. Suponha que você "conecte unidades à lógica do estado de suspensão", usando sleep.target
para inseri-las. Suas unidades de gancho não têm DefaultDependencies=no
, então elas dependem de sysinit.target
... e Conflict
com shutdown.target
.
Se você executar systemctl start reboot.target
e, em seguida, systemctl start suspend.target
, parece que sua unidade de gancho irá parar shutdown.target
. Agora systemd-reboot.service
tem Requires=shutdown.target
, por isso deve ser interrompido / cancelado também. ( umount.target
não deve ser cancelado).
Verifiquei uma diferença de comportamento ao longo destas linhas e relatei isso como um defeito no rastreador de problemas do systemd .