如何在 Ubuntu Upstart 上创建服务

meh*_*cek 23 upstart java services jar

我有一个 Java 可执行程序,我可以通过java -jar abc.jar在终端中输入来运行它。如何将其作为服务运行?我想通过键入service abc start.

Rae*_*nha 42

确保您使用的是 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
Run Code Online (Sandbox Code Playgroud)

/etc/init/myprogram.conf.

如果您的脚本需要多个命令行,请使用该script部分而不是该exec行:

# myprogram.conf
start on filesystem
script
    /usr/bin/java -jar /path_to/program
    echo "Another command"
end script
Run Code Online (Sandbox Code Playgroud)

要为您的服务启用 bash 完成功能,请在/etc/init.d文件夹中添加一个符号链接:

sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram
Run Code Online (Sandbox Code Playgroud)

然后尝试启动和停止它:

sudo service myprogram start
Run Code Online (Sandbox Code Playgroud)

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

此外,我读到您想检查进程是否正在运行。检查这个问题,也许使用该pre-start部分。

  • @juliocesar 16.04 使用 systemd,而不是 Upstart。 (2认同)