想要制作暴发户脚本;需要帮助和建议


13

自动取款机,我需要随机地开始和停止工作(因为我心中缺少一个更好的词)。我通过键入开始它,java -jar foo.jar并停止它找出它的pid并杀死它。杀死它不会导致任何数据丢失或损坏,也不会引起任何后果,仅是仅供参考。这两个步骤都很繁琐,因为第一个命令必须从特定目录执行,即/usr/share/jetty(kill可以在任何地方执行)。

所以我在想些什么

service foo startservice foo stop启动和停止服务。这可能,更重要的是正确的吗?还有其他解决方案吗?

谢谢。

Answers:


13

是的,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


是否需要重新启动才能使更改生效?update-rc.d无效/
-theTuxRacer

您不需要update-rc.d新手工作。
奥利(Oli)

新贵使用inotify监视/ etc / init,因此它通常知道对下面文件的所有编辑。除了“启动my-jetty-jar”外,无需执行任何操作。哦,和@Oli,您当然可以从头开始。请注意,将来在运行级别[!2345]上停止可能会被标记为停止事情的一种坏方法(因为它不能保证文件系统卸载前它们将停止)
SpamapS 2011年

不幸的是,您的解决方案似乎不再适用于Jetty 8,因为start.jar会生成另一个进程,而该进程不会被您的方法杀死。我创造了另一个问题来解决这个问题:stackoverflow.com/questions/10796242/...
塞比

4
@Sebi您可能只需要在其中粘贴一个expect forkscript开始之前)。
奥利(Oli)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.