在 ubuntu 15.04 上,我通过 vnc 会话运行 java 应用程序。我有 8 个已定义的会话,它们在系统引导期间启动。我的问题是,如何创建一个脚本来检查进程是否仍在各种 vnc 显示器上运行(例如:1 到:8),并在检测到给定的 vnc 会话未运行时重新启动 java 进程?
谢谢
答案1
Ubuntu 15.04 有 systemd 来满足这种需求。
以下是您需要为应用程序编写的 .service 文件的示例
[Unit]
Description=Some kind of description
[Service]
Type=simple
ExecStart=<path to your bin with args if needed>
Restart=on-failure
将此文件保存为<your-app-name>.service
以下名称/etc/systemd/system/
并运行以下命令来启动它
sudo systemctl start <your-app-name>
如果你想让它运行广告启动,只需启用该服务
sudo systemctl enable <your-app-name>
在以下关联您可以找到更多信息来根据您的需要调整上述文件
答案2
runit
我推荐或包daemontools
,它们非常相似。这些是坚如磐石的工具,可让您连续运行流程并自动重新启动它们。
该软件从您的 inittab 或 rc 脚本启动,您可以配置runit
或daemontools
启动和监视您的进程。
您可以对所有流程进行细粒度控制,日志记录是内置的,并且因为这些包启动您的流程和等待它们,将自动重新启动死进程。它还会根据您可以选择设置的参数来监视快速重新启动并在这种情况下进行限制。
这两个软件包中的另一个可能可以从您的操作系统的存储库中获得(您没有提到是哪一个)。两者都可以在 Debian 和 Ubunut 存储库中找到,我知道 CentOS 也有一个存储库。
这是讨论这两个选项和其他选项的页面: http://www.skarnet.org/software/s6/why.html