目前,我需要随机启动和停止(我脑子里找不到更好的词)一个作业。我通过输入来启动它java -jar foo.jar
,要停止它,找出它的 pid 并终止它。终止它不会导致任何数据丢失或损坏,仅供参考。执行这两个步骤很繁琐,因为第一个命令必须从特定目录执行,即/usr/share/jetty
(终止可以从任何地方执行)。
所以我在想
service foo start
以及service foo stop
启动和停止服务。这可能吗?更重要的是,这样做是否正确?还有其他解决方案吗?
谢谢。
答案1
是的,Upstart 是一个很好的选择。只需创建一个新文件:
sudoedit /etc/init/my-jetty-jar.conf
您可以将文件名更改为任何您喜欢的文件名,然后将其粘贴在其中:
description "Run my jetty jar"
# no start option as you might not want it to auto-start
# This might not be supported - you might need a: start on runlevel [3]
stop on runlevel [!2345]
# if you want it to automatically restart if it crashes, leave the next line in
respawn
script
cd /usr/share/jetty
su -c "/usb/bin/java -jar /path/to/foo.jar" nobody
end script
关于这一点,我有一些注意事项,su
出于安全考虑,我不会向任何人透露。您可能需要将其su
转移到另一个帐户,但可能不建议将其作为运行root
。