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

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

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

[Seat:*]
user-session=mate
session-cleanup-script=/sbin/reboot
allow-guest=false

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

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

1
задан 23 June 2017 в 08:39

1 ответ

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

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

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

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

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

[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 скрипт

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

[ 112]
0
ответ дан 23 June 2017 в 08:39