[systemd-devel] safe and fast shutdown/reboot

Andrei Borzenkov arvidjaar at gmail.com
Fri Mar 16 07:49:54 UTC 2018


16.03.2018 10:19, aleivag пишет:
>>
>>
>> Won't work. Status changes only when job for a unit completes and jobs
>> are executed in order of dependencies. Actually, jobs are *queued* in
>> order of dependencies so nothing would indicate that you are going to
>> shutdown until it is too late (i.e. all normal services are stopped).
>>
>>
> yes, but those units have started, so during a `systemctl reboot` you can
> execute
> 
> [~] systemctl list-jobs shutdown.target reboot.target
>  JOB UNIT            TYPE  STATE
> 1972 reboot.target   start waiting
> 1974 shutdown.target start waiting
> 
> 2 jobs listed.
> 
> and get if shutdown has started
> 

Yes, you are right. I'm sure I have seen cases when jobs were not
present in other cases so I assumed it will be here as well.

> the other thing that may help you know if you are in shutdown mode is
> execute `systemctl is-system-running`  and then check if returns `stopping`,
> during a shutdown is suppose to return something like that. and i think it
> does this by checking is shutdown.target has started (
> https://github.com/systemd/systemd/blob/7a30dfeb18d09940a844389e06b25ca2bca5e093/src/core/manager.c#L3833-L3836
> )
> 

Yes, could be more reliable.

> 
> Logically runlevel is not changed until *after* new runlevel has been
>> reached. Practically systemd does not update runlevel during shutdown at
>> all.
> 
> 
> yeap, you are right here, i was wrong :D
> 



More information about the systemd-devel mailing list