Я отправляю ответ на свой вопрос здесь. Если у кого-то есть другие решения, я бы с удовольствием их видел.
Обзор решения Недостаточно проверить и проверить, зарегистрирован ли кто-либо, когда запускается session-cleanup-script, потому что этот скрипт запускается после того, как пользователи полностью вышла из системы.
Используйте greeter-setup-script для установки временного файла при входе в систему. При запуске session-cleanup-script проверьте, существует ли файл. Если это так, перезагрузите / завершите предварительную перезагрузку. Если это не так, завершите скрипт без перезагрузки / выключенияОбзор решения Пример /etc/lightdm/lightdm.conf.d/50-ubuntu-mate.conf file
[Seat:*] user-session=mate greeter-setup-script=/path/to/greeter-setup.sh session-cleanup-script=/path/to/session-cleanup.sh # ... (other settings)Пример greeter-setup.sh script
#!/bin/bash
# Start watching for login and on login, set a status file
(
while [ $(who | grep "(:0)" | wc -l) -eq 0 ]
do
sleep 1
done
touch /tmp/loggedIn
) &
# ... do anything else that needs to be done when the greeter starts
Пример session-cleanup.sh script
#!/bin/bash
# Check the status file. If it exists, remove it and continue the script.
# If it does not exist, drop out of the script.
[ -e /tmp/loggedIn ] && rm /tmp/loggedIn || exit
# ... do whatever else needs to be done when sessions end
# in my case this amounts to ...
/sbin/shutdown -h 0