如何在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-startpre-stop / post-stop命令来执行。

另外,我读过你想检查进程是否正在运行。 检查此问题,并可能使用pre-start部分。

你需要创建一个暴发户。 http://upstart.ubuntu.com/getting-started.html

与良好的’SysV init脚本相比,Upstart(恕我直言)是一场灾难。 Upstart是FAR的更多努力,增加的工作几乎没有上升空间。 话虽如此,我怀疑会有一些新贵防御者会带我去为我说明明显的事情;-)