问题描述
我有一个 Java 可执行程序,我可以通过在终端中键入 java -jar abc.jar
来运行它。\n我如何将它作为服务运行?我想通过键入 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
命令。
此外,我了解到您想检查进程是否正在运行。检查 this question 并可能使用 pre-start
部分。