linux - 如何在 Linux 中自动启动需要 X 的应用程序

标签 linux startup

我正在尝试在系统进入运行级别 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(或您的窗口管理器)自动启动进程。 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/

相关文章:

ubuntu - 脚本在while循环中运行时计算机不会关闭

java - 在服务器启动时加载/初始化 Java servlet

linux - 使用 vala 将 uris 插入 Gtk.Clipboard

c - 多线程 random_r 比单线程版本慢

python - 为独立 HTML 桌面应用程序安装 Webkit

Python-MySQLdb 无法插入值,但运行打印到控制台的 SQL 会插入数据?

python - Linux 上 Python 中的随机数生成器

linux - 查看启动时运行的文件 (linux)

tomcat - 启动时的 Quartz 作业 - 上下文监听器添加

Java 启动应用程序 [WINDOWS]