Java 控制台 运行 在屏幕自动启动 Ubuntu

Java console running in a screen autostart on Ubuntu

[Ubuntu 14.04] 我有一个 java 控制台应用程序,我需要一直 运行 (第一个问题),并且我可以重新访问控制台每当我想要的时候(第二个问题)。

为了解决第二个问题,我使用了一个屏幕,然后运行里面的jar文件。这样我就可以重新连接屏幕以访问我的控制台应用程序。

我现在卡在第一期了。我想让屏幕自动启动 OS。因为我一直都需要应用 运行ning。有人给我一个主意吗?感谢您的帮助。谢谢


2015 年 11 月 17 日更新: 在@janos 的帮助下,除了使用@reboot 外,它工作正常。我试过 crontab 每 5 分钟启动一次脚本,它运行良好。但是当我用@reboot替换它时,它不再起作用了!

最后我选择了这个解决方案:创建一个具有特定名称的屏幕,然后创建一个脚本 sh 文件来检查是否存在具有该名称的屏幕。如果没有,则 运行 屏幕和 java 文件。最后,每 1 小时创建一个 运行 脚本的 crontab。

非常感谢@janos 的努力和帮助。

要在系统启动后运行一个程序,在你的crontab中使用@reboot:

@reboot /path/to/executable args

有关详细信息,请参阅此 Ubuntu 帮助页面:

https://help.ubuntu.com/community/CronHowto


根据您的评论,您似乎在使用 cron 运行ning Java + screen 时遇到困难。为了帮助您调试,我建议为 screen 创建一个自定义配置文件,我们称之为 ~/screen-debug,内容如下:

screen -t home
screen -t java bash -c 'java -jar ...; echo Press enter to exit; read'

并使用这样的 crontab 行进行测试:

*/5 * * * * screen -c ~/screen-debug -d -m -R java

这里发生了什么:

  • 运行 每 5 分钟作业一次
  • 使用特定的屏幕配置
  • 以分离模式启动屏幕
  • 重复使用名为 "java" 的屏幕会话
    • 如果不存在具有此名称的会话,它将创建它
    • 如果不存在具有此名称的会话,它将重新使用它(不启动另一个屏幕)
  • 屏幕会话中会有两个windows:
    1. 标记"home":一个简单的shell,就好像你运行screen在你的主目录
    2. 标注"java":Java程序,希望运行宁。如果不愉快 运行ning,您应该会看到应该可以帮助您调试问题的错误消息,以及 "Press enter to exit" 的提示。当您按回车键时,shell 将在此 window.
    3. 中终止

一旦你开始工作,你就可以用 @reboot 替换 */5 * * * *