当系统进入运行级别 5 时,我试图自动启动 X 应用程序。

这样做的正确方法是什么?

我写了一个脚本并将它放在/etc/init.d/

我已经运行了适当的 chkconfig 命令来设置/etc/rcX.d 目录中的符号链接(symbolic link)。

一切正常,除了脚本在我运行时无法启动 X 应用程序:

/sbin/service scriptName start

该行看起来像这样(为了争论,我已经切换到 xclock ):
'start')
xclock

我收到以下错误:
Error: Can't open display:

经过一些研究,似乎/sbin/service 从典型的 shell 中删除了大部分环境变量。通过添加显示:
'start')
DISPLAY=:0
export DISPLAY
xclock

我得到:
Error: Can't open display: :0

我修改了我的脚本以包括:
'start')
DISPLAY=:0
export DISPLAY
XAUTHORITY=/root/.xauth2w90ge
export XAUTHORITY
xclock

现在它可以工作了 - 但这显然是一个 hack,因为 .xauth2w90ge 文件是生成的,并且从实例到实例不会相同。

那么有没有合适的方法来做到这一点,或者我是在吠错树?我的要求是让这个应用程序在机器上自动启动,我受到我可以在 RPM 安装后脚本中运行的任何命令和权限的限制。

最佳答案

您应该让 X(或您的窗口管理器)自动启动进程,而不是定义 init 脚本。 X、KDE ​​和 Gnome 都有自动启动的方法(即 ~/.kde4/Autostart)。

如果这只是 X,请修改您的/etc/X11/xinit/xinitrc 文件(或等效文件)以使其运行您的命令。我在文件底部看起来像这样:

if [ -n "$failsafe" ]; then
    twm &
    xclock -geometry 50x50-1+1 &
    xterm -geometry 80x50+494+51 &
    xterm -geometry 80x20+494-0 &
    exec xterm -geometry 80x66+0+0 -name login
else
    exec $command
fi

所以你可以改变它来运行你想要的任何命令。

关于linux - 如何在 Linux 中自动启动需要 X 的应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5490861/

10-10 17:44
查看更多