【问题标题】:System Startup Folders/Methods on UNIX Platforms?UNIX 平台上的系统启动文件夹/方法?
【发布时间】:2012-02-21 04:26:32
【问题描述】:

我有一个 Java 应用程序需要实现在启动时启动 JAR 的安装功能。

我可以在 Window 上通过将 REG 文件输入注册表来执行此操作,但是如何在 UNIX 平台上执行此操作? Linux 和 Mac(如果方法不同)。

Linux 和 Mac 有系统启动文件夹吗?

请记住,我需要以编程方式执行此操作,而不是通过系统首选项或类似的方式。

【问题讨论】:

  • 你希望你的程序在启动时做什么?
  • @Gabe 注册一个 SystemTray 图标并检查下一个任务何时运行。然后它将休眠一段时间并稍后再次检查更新。我正在努力将其设计为低成本资源。 Java 很难做到这一点。我喜欢 Java,但长期运行的后台任务并不是它的亮点。我想制作一个 C 应用程序来完成这部分......但这只能在 Windows 上运行,我不知道如何制作托盘图标。

标签: java unix boot multiplatform startupscript


【解决方案1】:

在 Linux 上,经典方法是在适当的 /etc/rcN.d/ 目录中添加脚本(其中 N 是代表“运行级别”的数字 0-6)。我不确定这是否仍然是推荐的方式,但通常仍受支持。这也适用于其他主流 Unix 变体(Solaris、HP-UX、AIX)的微小变体。

在 Mac 上,您必须更加努力。文件/etc/rc.common/etc/rc.imaging/etc/rc.netboot 是相关的,但没有/etc/rcN.d 目录。还有一个脚本rc 和另一个rc.local。输入man rc 显示:

描述

rc.local 现在不受支持,已被 launchd(8) 取代,它通过 launchctl(1) 引导子命令自举,从标准位置读取 launchd(8) 作业。

另见

launchd(8), launchctl(1)

因此,您应该调查launchctllaunchd,尤其是launchctl

【讨论】:

  • 那些(launchctl、launchd、rc.common、...)是文件还是目录?
  • launchctllaunchd 是程序(参见 man launchctlman launchd)- 启动守护程序及其控制程序。 rc.common 等是我的 Mac 上 /etc/ 中的文件或脚本,它已从早期版本的 Mac OS X 升级,因此它可能是遗留的,但它可能是全新安装的 Lion 中的文件.
【解决方案2】:

这就是我在 ubuntu 上的做法。

首先创建一个bash脚本来运行java应用,类似。

#!/bin/bash
java -jar "helloworld.jar"

并保存它,在本例中称为 /etc/init.d 中的“HELLOWORLD”。

需要使脚本可执行所以需要运行

chmod +x HELLOWORLD

最后让它在启动时运行

update-rc.d HELLOWORLD defaults

【讨论】:

    【解决方案3】:

    在 Mac 上我认为是 launchd,在 linux 上是 init.d。它们是配置文件。

    【讨论】:

      猜你喜欢
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      相关资源
      最近更新 更多