gpt4 book ai didi

java - 在 Linux 启动时启动 Java jar 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:14 31 4
gpt4 key购买 nike

情况:

我在 server PC(PC 充当服务器)上有 jar 文件,a.jar,它将运行无限循环以监听来自 的 TCPIP 连接客户端电脑。建立连接后,客户端 PC 可以向 服务器 PC 发送一个 zip 文件,a.jar 将解压并执行脚本zip,这将启动另一个全屏显示 java 文件,b.jar

如果 b.jar 已经存在,

a.jar 也会在启动期间尝试运行 b.jar


方法一:

我在/etc/init.d/ 中写了一个脚本来启动a.jar,因为它是无限循环,系统在启动期间永远挂起(在终端屏幕中,甚至无法进入 GUI)。我必须启动到单用户模式才能删除该脚本才能正常启动。


方法 2:

当我更改脚本以作为守护进程运行 a.jar 时,它运行正常,监听连接,我可以连接到 server pc 并发送 zip 文件.

问题:

  1. b.jar 即使执行权限和文件都设置正确,也不会执行。
  2. 在我发送一个 zip 文件后,b.jar 被执行(因为它已连接到设备并且该设备已激活)。但是全屏显示不像通过终端执行时那样显示。

这样做的原因

可能看起来有点复杂,但是由于b.jar会不断更新,更新后必须自动启动,所以我使用a.jar解压缩并执行新版本的 b.jar

并且b.jar需要以root身份运行,因为它需要访问串口。

(服务器pc需要自动化,所以需要在开机时启动b.jar,并远程控制)


问题

请问有什么更好的方法吗?或者我做错了什么?有人可以告诉我一个更好的脚本来在启动期间启动它吗?

最佳答案

我认为如果您想将应用程序作为守护进程运行,最好的解决方案是使用 Apache Jsvc :

Jsvc is a set of libraries and applications for making Java applications run on UNIX more easily. Jsvc allows the application (e.g. Tomcat) to perform some privileged operations as root (e.g. bind to a port < 1024), and then switch identity to a non-privileged user. It can run on Win32 via the Cygwin emulation layer, however Win32 users may prefer to use procrun instead, which allows the application to run as a Windows Service.

关于java - 在 Linux 启动时启动 Java jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9597134/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com