Ubuntu Mate - перезагрузка или выключение при выходе?

Я использую Ubuntu Mate 16.04. Я хотел бы настроить систему так, чтобы она перезагружалась или закрывалась при выходе из системы. Вот что я сделал до сих пор:

я создал /etc/lightdm/lightdm.conf.d/50-ubuntu-mate.conf со следующим содержанием.

[Сиденье:*]
пользовательский сеанс = мат
сеанс очистка-скрипт =/ SBIN / перезагрузка
позволяют гостю = ложь

Хотя это успешно перезагружает компьютер при выходе из системы, у меня есть одна проблема с ним. Он также перезагружает машину, когда я нахожусь у приветствующего, и я выбираю другую учетную запись пользователя для входа. Я не хочу перезагружаться, когда я на самом деле не вошел в учетную запись, и все, что я делаю, это выбираю пользователя из выпадающего списка, чтобы войти в систему как.

Может кто-нибудь сказать мне, если есть другой способ пойти по этому поводу, который не вызывает перезагрузки от приветствия входа?

1 ответ

Решение

Отслеживать, идем ли мы от сеанса пользователя

Я публикую ответ на свой вопрос здесь. Если у кого-то есть другие решения, я бы хотел их увидеть.

Обзор решения
Недостаточно проверить, не вошел ли кто-либо, когда session-cleanup-script выполняется потому, что этот сценарий выполняется после того, как пользователи полностью вышли из системы. Я решил так отследить это.

  • использование greeter-setup-script установить временный файл при входе в систему
  • При беге session-cleanup-script проверьте, существует ли файл.
    • Если это так, перезагрузите / выключите preform
    • Если это не так, завершите сценарий без перезагрузки / выключения

Пример конфигурации
пример /etc/lightdm/lightdm.conf.d/50-ubuntu-mate.conf файл

[Сиденье:*]
пользовательский сеанс = мат
привратник-настройка-скрипт =/ путь / к /greeter-setup.sh
сеанс очистка-скрипт =/ путь / к / session-cleanup.sh

#... (другие настройки)

пример greeter-setup.sh скрипт

#!/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 скрипт

#!/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
Другие вопросы по тегам