如何使用 upstart 启动 GUI 应用程序?

如何使用 upstart 启动 GUI 应用程序?

我已经为这个问题苦苦挣扎了三天,尝试了很多方法来解决它,但还没有成功。我希望你们能帮助我......

我有一个 GUI 应用程序。我想自动启动此应用程序。当它意外关闭或关闭时,我想重新打开此应用程序。

我尝试使用 upstart 脚本,但是尽管 upstart 的服务没有问题,但 GUI 应用程序无法通过 upstart 脚本启动。它说无法连接 X 服务器。

我是否应该添加或更改一些设置以使用 upstart 打开,或者是否有任何方法可以在意外退出或关闭时自动打开 GUI 应用程序(不只是登录后一次,我的意思是不使用启动)?

答案1

创建文件$HOME/.config/upstart/myGuiStart.conf

内容:

start on desktop-start
stop on desktop-end

respawn

exec firefox

或者另一个带有延迟的示例:

start on desktop-start
stop on desktop-end

respawn

script
    sleep 30
    firefox 
end script

重生描述:

 respawn
         A service or task with this stanza will be automatically started
         if it should stop abnormally.  All reasons for a service stopping,
         except the stop(8) command itself, are considered abnormal.  Tasks
         may exit with a zero exit status to prevent being respawned.

更多信息:

http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html

http://upstart.ubuntu.com/

重生错误?->https://askubuntu.com/a/62461/265974

答案2

您所面临的问题是,当运行upstart(或systemd,或中的脚本/etc/rc.d/)时,通常没有图形服务(“X 服务器”)在运行。

此外,Unix 中图形子系统的可用性与以下概念紧密相关:用户已经进行了图形登录,只有这个用户才有权使用图形环境。通常不为 root 启动图形子系统 --- 并且 upstart 脚本由 root 运行。

为了在系统启动时自动启动图形应用程序,我的方法是:

  1. 为此目的创建一个用户。将其设置为其会话将自动启动。
    在此处输入图片描述

  2. 使用您想要的程序为此用户设置启动应用程序;在仪表板中选择“启动应用程序”: 在此处输入图片描述

  3. 当应用程序退出/崩溃时重新启动它,您可以简单地将其嵌入到脚本中:

         #!/bin/bash
         #
         while true; do 
              /full/path/to/start_myapp.sh    # NO background (&)!
              # if we land here it exited
              sleep 5
         done
    

如果你使用此脚本,那么命令start_myapp.sh不应该在后台启动应用程序,这一点非常重要。否则,需要更复杂的策略才能自动重启...

请注意,您也可以并行使用普通用户;只需从面板中选择“切换用户”(适应您的 Ubuntu 版本),您将获得另一个图形登录屏幕;您可以使用 CTRL-ALT-F7 和 CTRL-ALT-F8 来回切换...

相关内容