Java UNIX平台上的系统启动文件夹/方法?
我有一个Java应用程序,需要实现启动时启动JAR的安装功能 我可以在Windows上通过在注册表中输入一个REG文件来执行此操作,但在UNIX平台上如何执行此操作?如果方法不同,则使用Linux和Mac Linux和Mac是否有系统启动文件夹Java UNIX平台上的系统启动文件夹/方法?,java,unix,boot,multiplatform,startupscript,Java,Unix,Boot,Multiplatform,Startupscript,我有一个Java应用程序,需要实现启动时启动JAR的安装功能 我可以在Windows上通过在注册表中输入一个REG文件来执行此操作,但在UNIX平台上如何执行此操作?如果方法不同,则使用Linux和Mac Linux和Mac是否有系统启动文件夹 请记住,我需要以编程方式执行此操作,而不是通过系统首选项或类似的方式。在Linux上,经典的方法是通过在相应的/etc/rcN.d/目录中添加脚本(其中N是表示“运行级别”的数字0-6)。我不确定这是否仍然是推荐的方式,但它通常仍然受到支持。这也适用于其
请记住,我需要以编程方式执行此操作,而不是通过系统首选项或类似的方式。在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)bootstrap子命令引导自身从标准位置读入launchd(8)作业
另见
launchd(8), launchctl(1)
因此,您应该研究
launchctl
和launchd
,特别是launchctl
在Mac上,我认为它的launchd
,在linux上它的init.d
。它们是配置文件。我会在ubuntu上这样做
首先创建一个bash脚本来运行java应用程序,类似于
#!/bin/bash
java -jar "helloworld.jar"
并保存它,在本例中称为/etc/init.d中的“HELLOWORLD”
需要使脚本可执行,因此需要运行
chmod +x HELLOWORLD
最终使其在启动时运行
update-rc.d HELLOWORLD defaults
启动时,您的程序打算做什么?@Gabe注册一个SystemTray图标,并检查下一个任务何时运行。然后它将休眠一段时间,稍后再次检查更新。我真的很努力地将它设计成低成本的资源明智型。这对Java来说很难。我喜欢Java,但长期运行的后台任务并不是它的亮点。我想做一个C应用程序来做这个部分。。。但这只在Windows上有效,我不知道如何制作托盘图标。这些(launchctl、launchd、rc.common等)是文件还是目录?
launchctl
和launchd
是程序(请参见man launchctl
和man launchd
)-启动守护进程及其控制程序rc.common
etc是我的Mac电脑上/etc/
中的文件或脚本,它是从早期版本的Mac OS X升级而来的,因此它可能是一个遗留文件,但它可能是全新Lion安装中的一个文件。