首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何确保应用程序在Linux上持续运行

如何确保应用程序在Linux上持续运行
EN

Stack Overflow用户
提问于 2008-11-18 13:48:43
回答 13查看 94.9K关注 0票数 90

我正在尝试确保脚本在开发服务器上保持运行。它整理统计数据并提供web服务,因此它应该是持久的,然而一天中有几次,它因为未知的原因而消亡。当我们注意到时,我们只是再次启动它,但这是一个痛苦的后方,一些用户没有权限(或技术)启动它。

我的程序员想花几个小时找出问题的根源,但我忙碌的人认为必须有一种简单的方法来检测应用程序是否没有运行,并重新启动它。

我知道我可以通过grep对ps执行cron脚本:

代码语言:javascript
复制
ps -A | grep appname

但是,再说一次,这又浪费了我生命中的一个小时去做一些肯定已经存在的事情……有没有一个预制的应用程序,我可以传递一个可执行文件(可选的参数),并将保持一个进程无限期运行?

如果有什么不同的话,那就是Ubuntu。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2008-11-18 14:49:41

注意: Upstart处于维护模式,被使用systemd的Ubuntu abandoned。有关如何编写服务定义的详细信息,请查看systemd‘manual

既然你正在使用Ubuntu,你可能会对Upstart感兴趣,它已经取代了传统的sysV init。一个关键特性是,如果服务意外终止,它可以重新启动服务。Fedora已经转移到了暴发户,而Debian还处于实验阶段,所以它可能值得一看。

然而,对于这种情况来说,这可能有些过分了,因为cron脚本需要2分钟才能实现。

代码语言:javascript
复制
#!/bin/bash
if [[ ! `pidof -s yourapp` ]]; then
    invoke-rc.d yourapp start
fi
票数 38
EN

Stack Overflow用户

发布于 2009-05-26 14:57:41

我在cron中使用了一个简单的脚本来确保程序正在运行。如果不是,那么它将启动它。这可能不是您正在寻找的完美解决方案,但它很简单,而且效果相当好。

代码语言:javascript
复制
#!/bin/bash
#make-run.sh
#make sure a process is always running.

export DISPLAY=:0 #needed if you are running a simple gui app.

process=YourProcessName
makerun="/usr/bin/program"

if ps ax | grep -v grep | grep $process > /dev/null
then
    exit
else
    $makerun &
fi

exit

然后每分钟或每5分钟添加一个cron作业。

票数 91
EN

Stack Overflow用户

发布于 2008-11-18 13:51:54

Monit非常适合这样做:)

您可以编写简单的配置文件来告诉monit进行监视,例如TCP端口、PID文件等

monit将在它监控的进程不可用/使用太多内存/占用CPU太长时间/等情况下运行您指定的命令。它还会弹出一个电子邮件警报,告诉您发生了什么以及它是否可以对此采取任何措施。

我们使用它来保持我们的网站的负载运行,同时在出现问题时给我们早期警告。

--你忠实的员工,莫尼特

票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/298760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档