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

2024-06-21

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

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

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

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

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

/sbin/service scriptName start

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

'start')
xclock

我收到以下错误:

Error: Can't open display:

经过一些研究后发现 /sbin/service 从典型的 shell 中删除了大部分环境变量。通过添加显示:

'start')
DISPLAY=:0
export DISPLAY
xclock

I get:

Error: Can't open display: :0

我修改了我的脚本以包括:

'start')
DISPLAY=:0
export DISPLAY
XAUTHORITY=/root/.xauth2w90ge
export XAUTHORITY
xclock

现在它可以工作了 - 但这显然是一个黑客行为,因为 .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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Linux中自动启动需要X的应用程序 的相关文章

  • 未找到 ffmpeg 命令,但 pip 列表显示 ffmpeg

    我一直在尝试使用命令安装 ffmpegpip install ffmpeg我正在没有 sudo 权限的服务器上执行此操作 在编写 ffmpeg 时 我得到 ffmpeg command not found 然后我检查了pip list它显示
  • Laravel 5.4.* - 运行 artisan 时“”目录不存在

    我有一个全新安装的Ubuntu服务器14 04我目前正在尝试安装我的Laravel项目上 我已将整个存储库移至所需的文件夹中 但是当我运行命令时 php artisan 在该目录中 终端返回一个错误 指出 InvalidArgumentEx
  • rshd.c 源代码中缺少 pam_appl.h 和 pam_misc.h

    我正在研究一个CentOS 5 5 操作系统 它显示错误 security pam appl h 和 security misc h 文件丢失 实际上我的 rshd c 没有加载 PAM 模块 可能是通过放置这个库 它可以帮助我很好地工作我
  • Linux Bash - 日期格式

    我的日期格式是 yyyy mm dd hh mm ss 如何检查我的输入 它应该是这样的 bin bash read p Date format yy mm dd HH MM SS input check date Y m d H M S
  • UNIX/Linux IPC:从管道读取。运行时如何知道数据长度?

    我有一个子进程 它生成一些可变长度的输出 然后使用半双工管道将其发送到父进程 在父级中 如何使用 read 函数 由于每次数据的长度可能不同 我如何在运行时知道数据的大小以对缓冲区执行任何 malloc 操作 fstat 函数可以用于管道文
  • Bash:使用参数扩展查找和替换

    我想更换输入法 find string include 圆进度 38px 30px 4eb630 和输出 输出字符串 include 圆进度 38px 30px using find string pattern replacement s
  • Linux内核如何阻止BIOS系统调用?

    BIOS 调用在 Linux 操作系统中不可用 我想知道内核如何阻止执行包含对 BIOS 子例程的调用的指令 The BIOS http en wikipedia org wiki Basic Input Output System主要在
  • 监控(嗅探)由 FTDI USB 串行转换器创建的 /dev/ttyUSB0

    我想监视 嗅探 由 FTDI USB 串行转换器创建的 dev ttyUSB0 的流量 我已经在 Windows 中编写了自己的应用程序 现在我尝试将其移植到 Linux 并使用 dev tty USB0 我想调试实际发生的通信 软件 st
  • ModuleNotFoundError:没有名为“schedule”的模块

    我有导入时间表的Python程序 import schedule 在开头 使用 python3 命令执行代码没有问题 但从其他 python 文件启动它call sudo python3 ProgramWithSchedule py she
  • 如何从存储在 char* 指针中的 name 调用 c 函数?

    我想通过函数的名称动态调用函数 例如 假设有以下函数和字符串 void do fork printf Fork called n char pFunc do fork 现在我需要打电话do fork 就在 pFunc 那么这可能吗 欢迎 C
  • Linux 服务器的 CPU 使用百分比

    我想从 linux 服务器获取 CPU 使用率百分比 我通过 python 连接到我的 linux 服务器 shell spur SshShell hostname ip username root password password mi
  • 如何判断输入来自哪个键盘

    设想 我有一个 USB RFID 读取器 将其连接到笔记本电脑后 它可以用作新连接的 USB 键盘 例如无需安装任何驱动程序 当接触带有 RFID 标签的阅读器时 它进入我当前的窗口 例如终端 外壳 RFID 号码 例如0009339384
  • WSL gprof 报告零次

    我正在尝试在 Windows 10 上的 WSL 中使用 gprof 我没有预料到会遇到任何困难 因为上次我在 Windows 7 上的 Ubuntu 虚拟盒中使用它时它工作得很好 与以前一样遵循来自https www thegeekstu
  • 如何将动态链接的应用程序转换为静态链接的应用程序?

    我有一个应用程序 例如 gedit 它是动态链接的 但我没有源代码 所以我不能按我喜欢的方式编译它 我想要做的是将其静态链接并将其移动到没有运行该应用程序所需的库的系统 那么是否可以做到以及如何做到呢 理论上是可能的 您基本上必须执行与动态
  • posix 和 linux 特定函数的 C++ 包装器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道有什么好的库将 posix 和 linux 函数和结构 例如套接字或文件描述符 包装到 C 类中
  • 如何在每个 xargs 命令之间休眠 1 秒?

    例如 如果我执行 ps aux awk print 1 xargs I echo 我想让 shell 在每次之间休眠 1 秒echo 如何更改我的 shell 命令 您可以使用以下语法 ps aux awk print 1 xargs I
  • SDL/C++ OpenGL 程序,如何阻止 SDL 捕获 SIGINT

    我在用SDL http www libsdl org 用于在 Linux 上运行的 OpenGL 应用程序 我的问题是 SDL 正在捕获 SIGINT 并忽略它 这是一个痛苦 因为我正在通过屏幕会话进行开发 并且我无法使用 CTRL C 终
  • 32 位 x86 汇编中堆栈对齐的职责

    我试图清楚地了解谁 调用者或被调用者 负责堆栈对齐 64 位汇编的情况相当清楚 它是由caller 请参阅系统 V AMD64 ABI 第 3 2 2 节栈帧 输入参数区域的末尾应按 16 对齐 32 如果 m256 在堆栈 字节边界上传递
  • Linux 堆栈大小

    我正在寻找 Linux 内核中堆栈的良好描述 但我发现找到任何有用的东西出奇地困难 我知道大多数系统的堆栈限制为 4k 而其他系统则限制为 8k 我假设每个内核线程 下半部分都有自己的堆栈 我还听说 如果中断发生 它会使用当前线程的堆栈 但
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的

随机推荐