我正在寻找一种方法来推迟启动时出现的登录屏幕,或者一种方法来使登录字段在一定时间内或脚本运行完成后不可用(我需要等待系统日志中出现特定行,或者我可以等待 70 秒)。该方法必须在带有 lightdm/Unity 的 Ubuntu 16.04 上运行。
它必须只推迟启动后的登录屏幕,而不是“锁定屏幕”。如果可能的话,它也应该在计算机从睡眠状态唤醒时使用,但这不是必需的。
我一直在搜索类似的问题,但只能找到与减少登录时间等相关的问题,所以如果已经有类似的问题,请原谅我。
答案1
不确定你为什么需要这样做,但既然有人问了
显示管理器lightdm
提供了许多“钩子”来连接进程 - 尽管不幸的是,文档并不完整。在这种情况下,最有用的可能就是能够指定greeter-setup-script
在启动欢迎程序时要运行的程序:
# greeter-setup-script = Script to run when starting a greeter (runs as root)
利用此功能,您可以执行以下操作:
在某处创建一个脚本,
/usr/local/bin/greeter-setup-script
例如#!/bin/sh /usr/bin/logger "starting greeter-setup-script" /bin/sleep 70 /usr/bin/logger "stopping greeter-setup-script"
记录器行仅用于验证 - 您可以根据需要省略它们;您还可以
sleep
用更复杂的命令替换该命令,例如 tailing 和 grepping syslog。使脚本可执行:sudo chmod +x /usr/local/bin/greeter-setup-script
在 lightdm 配置目录中创建自定义配置文件,例如
/etc/lightdm/lightdm.conf.d/99-local-settings.conf
,包含以下条目[SeatDefaults] greeter-setup-script = /usr/local/bin/greeter-setup-script
如果您已经有编号的自定义文件或
/etc/lightdm/lightdm.conf
文件,则可以向其中添加条目。
当 lightdm 重新启动时,延迟应该在 /var/log/syslog 中可见,例如:
Aug 23 17:12:42 xenial-vm systemd[1]: Started Detect the available GPUs and deal with any system changes.
Aug 23 17:12:42 xenial-vm systemd[1]: Starting Light Display Manager...
Aug 23 17:12:43 xenial-vm systemd[1]: Started Light Display Manager.
Aug 23 17:12:44 xenial-vm root: starting greeter-setup-script
Aug 23 17:13:54 xenial-vm root: stopping greeter-setup-script
Aug 23 17:13:54 xenial-vm systemd[1]: Created slice User Slice of lightdm.