Ricardo_M_Lu_ 2021-07-15 15:14 采纳率: 0%
浏览 301
已结题

如何在ubuntu系统上以root权限开机自启动一个带界面的qt程序

研究了很久,尝试了如下方法,都不能行

  1. 在~/.config/autostart 下加入 desktop脚本
    现象:确实能开机自启动带界面的程序,但不是root权限的,是当前用户的权限

  2. 在init.d路径下放置脚本,并且ln -s 设置软链接到 rc5.d 下面
    现象:能开机自启动不带界面的程序,无法开机自启动带界面的程序,因为那个时候界面渲染的程序还没起来吧。

  3. 在init.d路径下放置脚本,并且ln -s 设置软链接到 rc5.d 下面启动一个不带界面的守护进程,在守护进程里sleep几秒之后启动qt进程
    现象:守护进程起来了,并且是root权限的,但是qt进程未启动。

  4. 在/etc/profile脚本的最后一行加入启动带界面程序的逻辑
    现象:程序是启动了,但是卡住了ubunut自带的界面,且不是root权限的

  5. 通过 xxx.service服务的方式
    我手动通过systemctl start xxx.service,无法启动程序,然后查看报错原因如下
    .service 里面的 execstart 里就是通过绝对路径去执行了程序,我手动执行 execstart下的命令是可以启动程序。但是通过systemctl start 就报如下错误
    7月 15 16:05:58 geust-virtual-machine systemd[1]: Starting kyrin system check server...
    7月 15 16:05:58 geust-virtual-machine kyrinSystemCheckClient[2643]: QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
    7月 15 16:05:58 geust-virtual-machine kyrinSystemCheckClient[2643]: qt.qpa.screen: QXcbConnection: Could not connect to display
    7月 15 16:05:58 geust-virtual-machine kyrinSystemCheckClient[2643]: Could not connect to any X display.
    7月 15 16:05:58 geust-virtual-machine systemd[1]: kyrinSystemCheck-server.service: Control process exited, code=exited status=1
    7月 15 16:05:58 geust-virtual-machine systemd[1]: kyrinSystemCheck-server.service: Failed with result 'exit-code'.
    7月 15 16:05:58 geust-virtual-machine systemd[1]: Failed to start kyrin system check server.

我感觉现在的方向是如下两个

  1. 系统提供了用户层面的路径 ~/.config/autostart,不知道是否有root权限的路径可以提供直接以root权限启动带界面的程序
    我知道有个 /etc/xdg/autostart的路径, 我把我的desktop脚本放进去之后,发现程序并没有启动,不知道是否和我登录的用户不是root有关系

  2. 可以通过rc.rc5.d/ 下放置脚本实现root开机自启动不带界面的程序,是否有方法可以不带界面的程序中想办法延迟启动我们的qt程序。
    目前我就是sleep了30秒,然后发现qt程序起不来.

  • 写回答

6条回答 默认 最新

  • 王大师王文峰 企业官方账号 2021-07-15 16:37
    关注

    将要运行的脚本添加到/etc/rc.local,此方法最为简单,只需要将要运行的脚本添加到rc.local中,注意需要在exit 0之前。

    评论

报告相同问题?

问题事件

  • 系统已结题 7月22日
  • 修改了问题 7月15日
  • 修改了问题 7月15日
  • 创建了问题 7月15日

悬赏问题

  • ¥20 5037端口被adb自己占了
  • ¥15 Error in check.length("fill") : 'gpar'成分'fill'的长度不能为零
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误