我们希望在Linux机器上运行应用程序作为服务/ Deamon而无需手动登录并启动它。该应用程序是一个Java,我们从shell(.sh)开始。
您是否知道如何在Linux发行版上作为服务/守护进程运行而无需登录,手动启动和停止?
答案 0 :(得分:2)
您需要在/etc/rc.local
上添加要运行的命令。
注意:该路径可能依赖于您的发行版或初始化系统,因此请查看发行版文档以确保(即它可能是/etc/init.d/local
或类似内容)。
通常会
chmod +x /etc/rc.local
并在内容中追加/添加将启动应用程序的命令
$ echo "sh myscript.sh &" >> /etc/rc.local # or just edit with your prefered editor
同样,根据您的发行版和初始化系统,您可能需要将文件作为服务添加到默认运行级别(或相应的运行级别)
sudo update-rc.d local defaults 80 # ie for ubuntu
查看this howto的Ubuntu, 或look here为Archlinux, 或here代表Gentoo
远程部分有很多麻烦。你是什么意思远程?是否在Lan中运行守护程序的计算机?你相信你的局域网吗?它是否与互联网通信?等等
我可能会在该计算机上设置ssh
,并且在需要时,我会登录并启动/停止该守护程序。您只需设置sshd
(通常为/etc/ssh/sshd_config
)并添加ssh
即可在启动时运行。
如果机器在本地Lan上,并且您认为登录并手动启动/停止守护程序太无聊并且想要更自动化的东西,我可能会编写一个机器人来解析特定用户的邮箱并在收到时对于“特殊”邮件,它会启动或停止或切换守护程序的状态(注意它必须具有适当的权限)。这听起来很简单,但你需要信任你的局域网或者小心你如何解析邮件(邮件欺骗等)。
答案 1 :(得分:1)
假设 我假设您的意思是如何让Java服务在不同的运行级别启动和停止。
看一下Java Service Wrapper它是一个应用程序,它是出于解决许多Java应用程序常见的许多问题而发展起来的。 Wrapper的功能如下:
上面的spiel来自网站,但我已经广泛使用它并且非常出色。我不能推荐它。
答案 2 :(得分:1)
除了其他答案,您还可以使用@reboot
crontab(5)条目
在Debian或Ubuntu上,您可以通过将/etc/init.d/skeleton
复制到/etc/init.d/iccubedaemon
(以及编辑该文件中)来创建自己的服务脚本,然后将其符号化为{{1等等......