当前位置: 首页 > 面试题库 >

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

鱼安然
2023-03-14
问题内容

我试图确保脚本仍在开发服务器上运行。它整理统计数据并提供Web服务,因此应该可以持续使用,但是一天几次,它会由于未知原因而死掉。当我们注意到我们只是再次启动它时,但是后部很痛苦,有些用户没有权限(或专有技术)来启动它。

我内的程序员想花几个小时来解决问题的根源,但内心的忙碌的人认为必须有一种简便的方法来检测应用程序是否未运行,然后重新启动它。

我知道我 可以 通过grep cron-script ps:

ps -A | grep appname

但是,这又是我生命中另一个小时的浪费,因为它必须做一些必须已经存在的事情……难道没有一个预制的应用程序可以传递一个可执行文件(可选地带有参数),并且可以使进程无限期地运行吗?

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


问题答案:

注意:Upstart处于维护模式,已被使用systemd的Ubuntu 放弃。一个人应该查阅系统手册,详细了解如何编写服务定义。

由于您使用的是Ubuntu,因此您可能会对Upstart感兴趣,它已取代了传统的sysV
init
。一个关键功能是,如果服务意外终止,它可以重新启动服务。Fedora已步入新贵,而Debian处于试验阶段,因此可能值得研究。

但是,对于这种情况,这可能是过大的,因为cron脚本将需要2分钟才能实现。

#!/bin/bash
if [[ ! `pidof -s yourapp` ]]; then
    invoke-rc.d yourapp start
fi


 类似资料:
  • 当测试/调试Java应用程序时,如何将断点放在某个被抓住的地方,而不挂起整个应用程序? 我有一个简单的Spring Boot应用程序,当我在我的IntelliJ社区集成开发环境中的某个地方设置断点时,整个应用程序会挂起。 我如何允许应用程序运行,即使我持有一个线程? 我能从两个试图同时登录的用户那里同时获得两个断点吗?

  • 问题内容: 对于目前市场上的iOS Ruler应用程序如何与不同尺寸的设备兼容,我确实感到困惑。底部显示了一个示例。 经过研究,我得出的结论是不可能实时获取当前屏幕的PPI,这使得不可能以编程方式绘制标尺。 我的查询是这些标尺应用程序如何在无法获取设备PPI的情况下准确显示标尺? 我首先想到的是每个设备的PPI和屏幕尺寸都硬编码到应用程序中。这似乎需要付出很大的努力,并且会导致一百万个错误。这真的

  • 问题内容: 我希望我的应用程序检查自身的另一个版本是否已在运行。 例如,启动后,用户单击以再次运行它,但是第二个实例意识到“哦,等等,已经在运行中”。并退出并显示一条消息。 问题答案: 您所寻找的内容可能最好用锁定文件来完成。锁定文件仅是指具有预定义位置且存在您的互斥体的文件。 测试程序启动时该文件是否存在,如果存在,请立即退出。在已知位置创建文件。如果程序正常退出,请删除锁定文件。 最好的办法是

  • ...有点。正如这个极其简单的例子所示, 我的一个应用程序很少以这种方式崩溃(到目前为止只报告过一次)。当一个不确定的异常发生时,我想像往常一样终止它。我的策略是(低级)记录问题,然后终止。应用程序是子系统的一部分,如果检测到任何问题,我想(重新)启动它。它是用C -Builder 6构建的,在Windows (XP)上运行...7,也是8)。我了解到< code>abort()很可能导致了这个错

  • 我现在尝试在Kubernetes集群上运行一个带有shell(/bin/bash)的简单容器。 我认为有一种方法可以通过使用和detach选项(命令上的选项)来保持容器在Docker容器上运行。 但是容器会退出几秒钟(就像使用命令启动一样,没有上面提到的选项)。并且ReplicationController重复地再次启动它。 是否有一种方法可以像命令中的选项一样,使容器在Kubernetes上运行

  • 问题内容: 我现在正在尝试在Kubernetes集群上运行带有shell(/ bin / bash)的简单容器。 我以为有一种方法可以通过使用and detach选项(命令上的选项)来保持容器在Docker容器上运行。 例如, Kubernetes中有这样的选择吗? 我试过使用类似以下的命令来运行容器: 但是容器会退出几秒钟(就像使用不带我上面提到的选项的命令启动一样)。然后Replication