在 Ubuntu 9.10 中 X 启动之前运行启动脚本

在 Ubuntu 9.10 中 X 启动之前运行启动脚本

我有一个脚本,我想在启动时运行它来根据位置切换 X-configs,但我似乎找不到将它放在哪里才能让它在启动 X 之前运行。这导致我必须重新启动 X 才能让它运行正确的配置。

目前,我的脚本位于/etc/init.d/whereami,符号链接位于/etc/rc[2-5].d/S25whereami。我试图找出 X 何时启动,以防问题仅仅是25,但我似乎找不到答案……

任何帮助都将受到赞赏。

答案1

Ubuntu 从 GDM 启动 X-windows(对于使用标准Ubuntu 桌面)或 KDM(对于使用kubuntu 桌面)。

要在 GDM/KDM 启动之前运行脚本,您可以

  1. 编写自己的 Upstart 脚本在 GDM 之前运行;或者
  2. 修改系统 GDM 脚本以运行自定义外部脚本(例如,/etc/init.d/whereami脚本)作为其初始任务之一。

Ubuntu 使用 Debian 风格的运行级别:运行级别 1是单用户,恢​​复模式;运行级别 2-5都是一样的(GUI 多用户);默认情况下系统启动到运行级别 2

Ubuntu 9.10 使用 Upstart,它提供服务启动脚本/etc/init. 更传统的 init 脚本/etc/init.d/etc/rc.d仍可用于尚未移植到 Upstart 样式的 init 脚本的服务,但 GDM 有一个。(注意 Ubuntu 9.10 提供/etc/init.d/gdm但没有创造任何/etc/rcX.d它的符号链接。)

GDM 启动由在 /etc/init.d/gdm 中脚本顶部的这些行指定何时启动和停止 GDM。请注意,没有运行级别启动 GDM 的规范 —— 仅必须首先启动的服务。

start on (filesystem
          and started hal
          and tty-device-added KERNEL=tty7
          and (graphics-device-added or stopped udevtrigger))
stop on runlevel [0156]

emits starting-dm

人5初始化查看 Upstart 脚本的文档,并检查系统的/etc/init/*.conf文件获取一些示例。另请参阅开始事件手册页:

例子
一个服务希望在另一个服务运行时运行,启动并停了下来它可能会使用:

start on starting apache
stop on stopped apache

必须在另一项任务或服务启动之前运行的任务可能会使用:

start on starting postgresql

还要注意的是,GDM/KDM Upstart 脚本会发出一个信号,起始 dm,这也可能有用。

因此,设计为在 GDM 之前运行的 Upstart 脚本应该使用下列脚本之一开始条款:

# run only when starting GDM
start on starting gdm

# run when starting GDM or KDM
start on (starting gdm 
          or starting kdm)

# run when starting any DM
# starting-dm is a custom event emitted by the GDM/KDM/etc scripts
start on starting-dm

答案2

通常,X 在运行级别 5 中启动,由于您希望脚本在 X 之前启动(以 xdm/kdm/gdm 的形式),因此您需要它具有比 Sxxxdm 条目更低的数字。因此,在我的系统上,xdm 以 S111xdm 启动,因此您需要一个符号链接/etc/rc5.d/S10whereami

相关内容