Ubuntu Mate - Reiniciar ou desligar no logoff?

1

Estou usando o Ubuntu Mate 16.04. Eu gostaria de configurar o sistema para que ele seja reinicializado ou desligado no logoff. Aqui está o que eu fiz até agora:

Eu criei /etc/lightdm/lightdm.conf.d/50-ubuntu-mate.conf com o seguinte conteúdo.

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

Enquanto isso reinicia com sucesso a máquina no logoff, eu tenho um problema com isso. Ele também reinicializa a máquina quando estou no recebedor de login e seleciono uma conta de usuário diferente para o login. Eu não quero reiniciar quando eu não estou realmente logado em uma conta e tudo o que eu estou fazendo é selecionar um usuário da lista suspensa para fazer o login como.

Alguém pode me dizer se há outra maneira de fazer isso que não causa reinicializações a partir da saudação de login?

    
por b_laoshi 23.06.2017 / 07:13

1 resposta

0

Rastreie se estamos ou não vindo de uma sessão de usuário

Estou postando uma resposta para minha própria pergunta aqui. Se alguém tiver outras soluções, adoraria vê-las.

Visão geral da solução
Não é suficiente verificar se alguém está logado quando o session-cleanup-script é executado, porque esse script é executado depois que os usuários foram completamente desconectados. Eu decidi rastrear isso assim.

  • Use greeter-setup-script para definir um arquivo temporário no login
  • Ao executar session-cleanup-script , verifique se o arquivo existe.
    • Se houver, reinicialize / desligue a pré-forma
    • Se isso não ocorrer, encerre o script sem reinicializar / desligar

Exemplo de configuração
Exemplo /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)

Exemplo de 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

Exemplo de 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
    
por b_laoshi 28.06.2017 / 07:27