Kiwy Asked: 2018-06-21 02:39:46 +0800 CST2018-06-21 02:39:46 +0800 CST 2018-06-21 02:39:46 +0800 CST 如何在Linux上用户登录之前执行命令 772 这是我在几个 Linux 风格中多次看到的问题,所以让我们尽量详尽。 在用户登录其桌面会话之前和之后执行脚本/命令/程序的方法是什么? lightdm gdm 2 个回答 Voted Best Answer Kiwy 2018-06-21T02:39:46+08:002018-06-21T02:39:46+08:00 介绍 在用户登录图形环境之前在图形环境中运行程序取决于您的显示管理器。显示管理器负责为您提供登录界面并在登录后设置您的图形环境。最重要的是以下几点: GDM是 GNOME 显示管理器。 LightDM是一个跨桌面的显示管理器,可以使用任何工具包编写的各种前端。 LXDM是 LXDE 显示管理器,但独立于 LXDE 桌面环境。 SDDM是 X11 和 Wayland 的现代显示管理器,旨在快速、简单和美观。 我们将回顾如何在任何用户登录之前弹出显示管理器时设置命令的执行,以及当有人最终登录时如何执行某些操作。 如果你不知道你运行的是哪一个,你可以参考这个问题: 有没有简单的 linux 命令可以告诉我我的显示管理器是什么? 重要 在开始之前,您将编辑文件,除非提到执行命令为root. 不要删除这些文件中的现有内容,除非您知道自己在做什么并且小心您放入这些文件中的内容。这可能会导致您无法登录。 GDM 小心 GDM,它将以“root”身份运行所有脚本,与 0 不同的错误代码可能会限制您的登录能力,只要您的命令运行,GDM 就会等待您的脚本完成使其无响应。如需完整说明 [阅读文档][5]。 登录前 如果您需要在用户登录之前运行命令,您可以编辑文件:`/etc/gdm3/Init/Default`。该文件是一个 shell 脚本,将在显示管理器显示给用户之前执行。 登录后 如果您需要在用户登录后但在其会话初始化之前执行操作,请编辑文件:`/etc/gdm3/PostLogin/Default` 如果您想在会话初始化会话之后执行命令(env,图形环境, login...) 编辑文件:`/etc/gdm3/PreSession/Default` 光DM 我将讨论 lightdm.conf 而不是 /etc/lightdm.conf.d/*.conf。你可以做你想做的事,重要的是知道你可以使用的选项。小心使用 lightDM,您可能已经启动了其他几个脚本,您应该在编辑之前准确阅读您的配置文件。您放置这些脚本的顺序也可能会影响会话加载的方式。 LightDM 的工作方式与您将在主配置文件中放置选项以指示将要执行的脚本的其他方式有所不同。 编辑主 lightDM conf 文件/etc/lightdm/lightdm.conf。 您应该添加第一行[Seat:*],如下所示: 更高版本的 lightdm(15.10 及更高版本)已将过时的 [SeatDefaults] 替换为 [Seat:*] 登录前 添加一行`greeter-setup-script=/my/path/to/script` 这个脚本会在lightDM显示登录界面时执行。 登录后 添加一行 `session-setup-script=/script/to/start/script` 这将在用户成功登录后以 `root` 身份运行脚本。 LXDM 登录前 如果你想在任何人登录之前执行命令,你可以编辑 shell 脚本:`/etc/lxdm/LoginReady` 登录后 如果你想在有人登录后以 root 身份执行命令,你可以编辑 shell 脚本:`/etc/lxdm/PreLogin` 如果你想以登录用户身份运行命令,你可以编辑脚本:`/等/lxdm/PostLogin` SDDM 登录前 修改位于 的脚本/usr/share/sddm/scripts/Xsetup。此脚本在登录屏幕出现之前执行,主要用于调整 X11 中的显示器显示。不确定 Wayland 的等价物是什么 登录后 sddm现在将获取位于 的脚本/usr/share/sddm/scripts/Xsession,这反过来将根据用户的默认 shell获取用户的点文件。 对于 bash shell,它将 source ~/.bash_profile(等等),对于 zsh,它将 source ${ZDOTDIR:-$HOME}/.zprofile(等等)。您可以借此机会修改这些文件,以便在登录后也运行您需要的任何其他命令。 kbenoit 2020-01-13T09:10:23+08:002020-01-13T09:10:23+08:00 我需要在登录之前配置我的鼠标,以便所有用户都能从中受益。我找到了阅读这个问题的解决方案。我想我应该看看通过 GDM 配置它,但是要在任何会话开始时进行设置,我必须通过 XDG 自动启动来设置它。在 /etc/xdg/autostart 中,有一堆 .desktop 文件在登录时为每个 xsessions 运行(在我的 ubuntu 系统中)。
介绍
在用户登录图形环境之前在图形环境中运行程序取决于您的显示管理器。显示管理器负责为您提供登录界面并在登录后设置您的图形环境。最重要的是以下几点:我们将回顾如何在任何用户登录之前弹出显示管理器时设置命令的执行,以及当有人最终登录时如何执行某些操作。
如果你不知道你运行的是哪一个,你可以参考这个问题:
有没有简单的 linux 命令可以告诉我我的显示管理器是什么?
重要
在开始之前,您将编辑文件,除非提到执行命令为
root
. 不要删除这些文件中的现有内容,除非您知道自己在做什么并且小心您放入这些文件中的内容。这可能会导致您无法登录。GDM
小心 GDM,它将以“root”身份运行所有脚本,与 0 不同的错误代码可能会限制您的登录能力,只要您的命令运行,GDM 就会等待您的脚本完成使其无响应。如需完整说明 [阅读文档][5]。登录前
如果您需要在用户登录之前运行命令,您可以编辑文件:`/etc/gdm3/Init/Default`。该文件是一个 shell 脚本,将在显示管理器显示给用户之前执行。登录后
如果您需要在用户登录后但在其会话初始化之前执行操作,请编辑文件:`/etc/gdm3/PostLogin/Default` 如果您想在会话初始化会话之后执行命令(env,图形环境, login...) 编辑文件:`/etc/gdm3/PreSession/Default`光DM
我将讨论 lightdm.conf 而不是 /etc/lightdm.conf.d/*.conf。你可以做你想做的事,重要的是知道你可以使用的选项。小心使用 lightDM,您可能已经启动了其他几个脚本,您应该在编辑之前准确阅读您的配置文件。您放置这些脚本的顺序也可能会影响会话加载的方式。LightDM 的工作方式与您将在主配置文件中放置选项以指示将要执行的脚本的其他方式有所不同。
编辑主 lightDM conf 文件
/etc/lightdm/lightdm.conf
。您应该添加第一行
[Seat:*]
,如下所示:登录前
添加一行`greeter-setup-script=/my/path/to/script` 这个脚本会在lightDM显示登录界面时执行。登录后
添加一行 `session-setup-script=/script/to/start/script` 这将在用户成功登录后以 `root` 身份运行脚本。LXDM
登录前
如果你想在任何人登录之前执行命令,你可以编辑 shell 脚本:`/etc/lxdm/LoginReady`登录后
如果你想在有人登录后以 root 身份执行命令,你可以编辑 shell 脚本:`/etc/lxdm/PreLogin` 如果你想以登录用户身份运行命令,你可以编辑脚本:`/等/lxdm/PostLogin`SDDM
登录前
修改位于 的脚本
/usr/share/sddm/scripts/Xsetup
。此脚本在登录屏幕出现之前执行,主要用于调整 X11 中的显示器显示。不确定 Wayland 的等价物是什么登录后
sddm
现在将获取位于 的脚本/usr/share/sddm/scripts/Xsession
,这反过来将根据用户的默认 shell获取用户的点文件。对于 bash shell,它将 source
~/.bash_profile
(等等),对于 zsh,它将 source${ZDOTDIR:-$HOME}/.zprofile
(等等)。您可以借此机会修改这些文件,以便在登录后也运行您需要的任何其他命令。我需要在登录之前配置我的鼠标,以便所有用户都能从中受益。我找到了阅读这个问题的解决方案。我想我应该看看通过 GDM 配置它,但是要在任何会话开始时进行设置,我必须通过 XDG 自动启动来设置它。在 /etc/xdg/autostart 中,有一堆 .desktop 文件在登录时为每个 xsessions 运行(在我的 ubuntu 系统中)。