我正在使用 Ubuntu Mate 16.04。我想配置系统,使其在注销时重新启动或关闭。以下是我目前所做的:
我创建了/etc/lightdm/lightdm.conf.d/50-ubuntu-mate.conf
以下内容。
[座位:*] 用户会话=mate 会话清理脚本 = /sbin/reboot 允许客人=false
虽然这可以在注销时成功重新启动计算机,但我有一个问题。当我在登录欢迎界面并选择其他用户帐户登录时,它也会重新启动计算机。当我实际上没有登录帐户时,我不想重新启动,我所做的只是从下拉列表中选择一个用户以作为其登录。
有人能告诉我是否有其他方法可以解决这个问题而不导致登录欢迎程序重新启动吗?
答案1
跟踪我们是否来自用户会话
我在这里发布了我自己的问题的答案。如果有人有其他解决方案,我很乐意看到。
解决方案概述
在运行时检查是否有人登录是不够的,session-cleanup-script
因为这个脚本是在用户完全注销后运行的。我决定像这样跟踪它。
- 用于
greeter-setup-script
在登录时设置临时文件 - 运行时
session-cleanup-script
,检查该文件是否存在。- 如果是,请执行重启/关机
- 如果没有,则终止脚本而不重启/关机
示例配置
示例/etc/lightdm/lightdm.conf.d/50-ubuntu-mate.conf
文件
[座位:*] 用户会话=mate 问候语设置脚本=/路径/到/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