我有一个ec2的微型实例。 几个java进程'不时被杀死。
我可以运行哪个工具来监视进程并重新启动,然后当它们被杀死?
我不认为从一个cron-job调用几个程序的pipe道是监视一个服务的最轻的方法。 在我看来,最简单的方法是使用init进程来监督你的进程。 不幸的是,最stream行的/ sbin / init实现(SysVinit)不能很好地完成。 新贵在这个任务上好多了,可能也是系统。
另外一种方法是非初始化进程pipe理器,比如daemontools包及其克隆的supervise 。 这样的主pipe启动一次,运行监督的过程,只有当发生什么事情(如崩溃)时才会作出反应。 所以它几乎不使用额外的资源,并立即对崩溃做出反应。
重量最轻的方法就是让一个cron作业每隔一段时间运行一次,并在程序尚未运行时启动。 在大多数情况下,ps的一个简单的grep会告诉你它是否正在运行:
( ps x | grep $PROGRAM NAME | grep -v grep ) || /path/to/program