如何在 Ubuntu Upstart 上创建服务

如何在 Ubuntu Upstart 上创建服务

我有一个 Java 可执行程序,可以java -jar abc.jar在终端中输入来运行。我怎样才能将其作为服务运行?我想将其作为服务运行,就像输入一样service abc start

答案1

确保你使用的是 14.04。Ubuntu 16.04(及以上版本)使用 systemd,而不是 Upstart。

Upstart 脚本是一个位于/etc/init/并以 结尾的脚本文件.conf

它需要两个部分:一个部分用于指示何时启动,另一个部分用于执行命令。

从您的示例开始的最简单的脚本是:

# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program

以 root 身份在 下创建/etc/init/myprogram.conf

如果您的脚本需要多个命令行,请使用该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

根据新贵食谱,您可以创建pre-start/post-startpre-stop/post-stop要执行的命令。

此外,我了解到您想检查某个进程是否正在运行。检查这个问题并可能使用该pre-start部分。

答案2

您需要创建一个新贵。 http://upstart.ubuntu.com/getting-started.html

与老好的 SysV 初始化脚本相比,Upstart(在我看来)是一场灾难。Upstart 需要付出更多努力,但增加的工作量却没有多大好处。话虽如此,我怀疑会有一些 Upstart 的捍卫者会因为我说出了显而易见的事实而责备我 ;-)

相关内容