AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 450835
Accepted
Kiwy
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 2 个回答
  • 20806 Views

2 个回答

  • Voted
  1. 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(等等)。您可以借此机会修改这些文件,以便在登录后也运行您需要的任何其他命令。

    • 18
  2. kbenoit
    2020-01-13T09:10:23+08:002020-01-13T09:10:23+08:00

    我需要在登录之前配置我的鼠标,以便所有用户都能从中受益。我找到了阅读这个问题的解决方案。我想我应该看看通过 GDM 配置它,但是要在任何会话开始时进行设置,我必须通过 XDG 自动启动来设置它。在 /etc/xdg/autostart 中,有一堆 .desktop 文件在登录时为每个 xsessions 运行(在我的 ubuntu 系统中)。

    • 0

相关问题

  • 在手动更改 $XDG_DATA 的位置后,$GDM_USER 无法访问 $XDG_DATA

  • 如何配置 gdm 以登录到 sway 会话?

  • 在 Linux Mint 上用 LightDM 替换 MDM 的正确程序是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve