我正在尝试在系统进入运行级别 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/