gpt4 book ai didi

java - Linux liveUSB 导致 init.d 脚本出错

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:14 25 4
gpt4 key购买 nike

<小时/>

总体问题

<小时/>

当我通过/etc/init.d/安装一个我编写的在后台启动时运行的简单 Java 应用程序时,它可以在我明确安装的 liveUSB 上运行。当我复制该棒时,它从未成功启动。启动 liveUSB 副本时,当 liveUSB 启动过程到达我的脚本时,Java 应用程序将始终挂起。我的脚本确实执行了它应该执行的操作,甚至每 5 分钟执行一次,并且将永远继续运行,直到您关闭计算机。

  1. 我的脚本阻止了其他一切
  2. 除了我的脚本之外,没有任何内容加载
  3. 您无法取消我的脚本
  4. 没有 GUI
  5. 您可以看到的唯一文本是我的脚本的命令行输出
<小时/>

设置和测试 - 一切顺利:)

<小时/>

我有一个带有 3 个分区的 Linux liveUSB。简单的标准 Xubuntu 镜像已加载。

  • sda1 > 2GB 存储空间
  • sda2 > 2GB 系统
  • sda3 > casper 剩余 GB

我创建了一个简单的 Java 应用程序,该应用程序在启动时在后台运行。为了做到这一点,我遵循了以下步骤:

  1. 将 java 应用程序编译为类
  2. 将类文件放置在/home/user/folder/
  3. 将我的startup.sh脚本复制到/etc/init.d/
  4. 在/etc/init.d/内
    • 输入“update-rc.dstartup.sh start 20 2 5 .stop 20 0 1 6 。”
    • 已成功更新运行级别
  5. 现在我可以重新启动/重新启动/关闭任何操作,一切都运行完美!
<小时/>

文案 - 这就是棘手的地方!

<小时/>

创建此棒的副本时,我按照以下步骤操作:

  1. 挂载sda2
    • 将该文件夹中的所有内容复制到/home/user/Desktop/tmp-system/
  2. 挂载sda3
    • 将该文件夹中的所有内容复制到/home/user/Desktop/tmp-casper/
  3. 进入/home/user/Desktop/tmp-system/
    • 输入“tar -cvf system.tar”。
  4. 进入/home/user/Desktop/tmp-casper/
    • 输入“tar -cvf casper.tar”。
  5. 卸载
    • sda2
    • sda3
  6. 插入空 USB(例如 sdb)
    • 设置分区(与您要从中复制的存储盘相同)
    • 解压到分区
      • tar -xvf system.tar ... 进入 sdb2
      • tar -xvf casper.tar ... 进入 sdb3
<小时/>

测试 - 这就是一切出错的地方!

<小时/>
  1. 将新创建的 liveUSB 插入计算机
  2. 从 USB 启动
  3. 一切开始正常启动
  4. 我编写的 Java 应用程序被触发
    • 启动进程永远挂起
    • 没有可用的 cmd 提示符
    • 没有可用的 GUI
    • 就好像线程正在运行(确实如此!每 5 分钟可以查看一次输出 - 这正是它应该的方式)
<小时/>

解决方案尝试和陷阱

<小时/>

1

我可以挂载复制的 liveUSB,编辑startup.sh 以不启动我的 Java 应用程序,但它仍然不会启动(正如我怀疑的那样?)。

<小时/>

2

如果我使用“dd if=sda of=sdb”,liveUSB 的副本将工作得很好。然而,这不是一个可接受的解决方案。如果我用 dd 将 16gb 棒复制到 64gb 棒,那么 64gb 棒就会变成 16gb。

<小时/>

3

测试了startup.sh 和Java 应用程序本身的许多变体。所有这些都会产生相同的错误。

<小时/>

4

我用来复制适用于所有其他形式的应用程序、文件或其他任何内容的方法。

<小时/>

5

我还想尝试避免使用任何其他库或程序来帮助运行 Java 应用程序。

最佳答案

你最好做的是使用一种方法快速创建一个 liveUSB Linux 棒,然后添加 Java 程序设置和目录。这里有一些帮助 - Bootable pendrive as live cd

我绝对喜欢你提到的第一点。复制liveUSB即使没有Java程序也不起作用。您已经花了相当多的时间来调试该程序。我感觉您有兴趣制作许多安装了 Java 程序的 liveUSB。由于 dd 不是一个选项,我的猜测是,以某种方式使用 Kickstart 过程来快速安装 LiveUSB,然后复制 Java 内容更有意义。谢谢。

关于java - Linux liveUSB 导致 init.d 脚本出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18989155/

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