启动 X 服务器后执行脚本

启动 X 服务器后执行脚本

我需要运行一个 24 小时不间断的批处理程序。在断电时,我已经将 Ubuntu Server 14.04 配置为在电源恢复后立即启动,自动登录并启动程序。

该过程基于 GPU 功率,超频后效果更佳。我能够通过配置 xorg.conf 并执行 xinit 来完成此操作。当我执行此操作时,屏幕变白,命令行消失。我使用远程 SSH 客户端执行“overclock.sh”并启动程序,它成功了。

我的问题是,由于我不能每次都使用远程客户端,执行 xinit 后如何执行其他脚本?

CRTL+ALT+F1 返回命令行,但如何在启动脚本中使用它?

我想在启动时执行: - xinit; - overclock.sh; - start_program.sh;

更新时间:2017 年 8 月 27 日:现在,我更加了解正在发生的事情:

  1. 我在控制台环境tty1中。

  2. 当运行“xinit”时,它会在 tty7 上打开一个粗略的屏幕。

  3. 通过按下 CRTL+ALT+F1,我回到终端 tty1,但卡在“xinit”命令上。这就是为什么 .bash-login 脚本之后不执行任何其他命令的原因。

  4. 按下 CTRL+C 会停止 tty7 环境,并且超频不起作用。

  5. 现在最奇怪的部分:如果我按下 CTRL+Z,我返回控制,超频有效,但是当我运行程序时,只有 GPU0 开始工作。

  6. 还尝试了“setsid xinit &> /dev/null”,同样,一切都很完美,但只有 GPU0 可以工作。

7 另一种方法:在粗略屏幕 tty7 中,我用鼠标单击上面的命令行,输入 overclock.sh,它就可以正常工作。所有 8 个 gpu 都可以正常工作。这似乎更接近答案。

我如何制作一个批处理文件以便在 tty7 启动时执行命令?

2017年8月28日更新:

我解决了。魔法是研究 xinit 调用的 xterm。它接收参数 -e“命令”。将脚本作为命令。

答案1

使用以下命令将脚本添加到你的 crontab crontab -e

@reboot /path/to/overclock.sh; /path/to/start_program.sh

如果您想将其添加到根 crontab ( sudo crontab -e),另外您还需要设置一个用户,例如root

@reboot root /path/to/overclock.sh; /path/to/start_program.sh

阅读更多man 5 crontab

答案2

我可以看到三种实现此目的的方法:

  • /etc/init.d: 中放入您想要在启动时启动的脚本。该脚本需要像目录中的其他脚本一样进行结构化(可能令人生畏)
  • 用你的脚本即服务然后在启动时启动该服务。
  • 使用定时任务使用@reboot 工作。

答案3

我尝试了其他 2 个答案所建议的方法,但失败了。我发现最好的办法是在桌面设置中设置自动启动脚本。

相关内容