如何在Ubuntu Upstart上创建服务
我有一个Java可执行程序,我可以通过在终端输入java -jar abc.jar
来运行。 如何将其作为服务运行? 我想通过输入service abc start
来将其作为服务运行。
确保你在14.04。 Ubuntu 16.04(及更高版本)使用systemd,而不是Upstart。
Upstart脚本是放在/etc/init/
并以.conf
结尾的脚本文件。
它需要2个部分:一个用于指示何时启动,另一个用于执行命令。
从示例开始最简单的脚本是:
# myprogram.conf start on filesystem exec /usr/bin/java -jar /path_to/program
在/etc/init/myprogram.conf
下以root身份创建。
如果您的脚本需要多个命令行,请使用script
部分而不是exec
行:
# myprogram.conf start on filesystem script /usr/bin/java -jar /path_to/program echo "Another command" end script
要为服务启用bash完成,请在/etc/init.d
文件夹中添加符号链接:
sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram
然后尝试启动并停止它:
sudo service myprogram start
根据upstart cookbook ,您可以创建pre-start
/ post-start
和pre-stop
/ post-stop
命令来执行。
另外,我读过你想检查进程是否正在运行。 检查此问题,并可能使用pre-start
部分。
你需要创建一个暴发户。 http://upstart.ubuntu.com/getting-started.html
与良好的’SysV init脚本相比,Upstart(恕我直言)是一场灾难。 Upstart是FAR的更多努力,增加的工作几乎没有上升空间。 话虽如此,我怀疑会有一些新贵防御者会带我去为我说明明显的事情;-)