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