首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux Daemons的最佳实践

Linux Daemons的最佳实践
EN

Server Fault用户
提问于 2013-11-16 05:14:07
回答 3查看 2K关注 0票数 3

我一直在查找有关在Linux上运行后台进程的信息。基本要求是:

  • 启动进程并保持其运行,无论发生什么。
  • 如果进程因任何原因退出,请立即重新启动它。
  • 能够以特定用户的身份启动流程。

此外,有些进程不需要连续运行,而需要定期运行。这当然是cron的工作,而且很可能是我用来做的。但是对于连续的过程来说,情况就不一样了。

在Mac上,我将launchd用于此目的。Launchd是在Mac上启动进程的规范方法。操作系统将它用于所有的系统服务,因此我对依赖它毫无顾虑。到目前为止,我还没有找到类似的Linux系统。各种发行版似乎都有自己的方法(Ubuntu的新贵,等等)。关于/etc/rc.local,/etc/init.d/rc.local,/etc/initd/rc.local,或/etc/init之间的关系,我仍然找不到一个直接的答案。每个系统都不一样。此外,“服务启动/停止x”并不适用于所有系统(而且Google在这里也没有提供帮助),而我称之为“一团糟”。

我想要的是一个地方,我可以保存我的脚本,我可以在那里重新启动系统,并让它们在启动时作为守护进程启动(在任何用户登录之前),然后在它们终止时让它们自动重新启动。我希望它是稳定可靠和完全兼容的多个发行版,而不是一些后顾之忧,如暴发户。

这有可能吗?

EN

回答 3

Server Fault用户

回答已采纳

发布于 2013-11-16 06:10:09

遗憾的是,Linux发行版(为了使自己与众不同并使系统管理员的生活变得困难)在不同的启动方式上都进行了标准化。

与Linux启动脚本的“跨发行标准”最接近的是系统风格的运行级。这些在某些系统上是不可取的(例如,Ubuntu的官方立场是您应该使用Upstart),但是它们仍然可以工作,而且可能会持续很长一段时间。

如果您的守护进程崩溃,SysV init脚本不会处理“自动重新启动”--它们会启动一个需要自己处理的守护进程。

如果你想要监督,你需要写/包括你自己的主管框架。

(或者,只需编写一段不会崩溃的软件,这是处理此问题的传统Unix方法。如果您的守护进程非常不稳定,需要额外的监督来继续重新启动它,这通常意味着您需要做更多的工作来提高它的生产质量。)

票数 6
EN

Server Fault用户

发布于 2013-11-16 06:55:56

你和暴发户关系密切--你需要的是系统。它还没有完全被支持,但是处理旧风格的SysV init脚本(尽管没有监督),并且可以很容易地在许多发行版上运行。目前没有更好的解决方案可供选择,但是如果您不想更改整个init,您可能会对monit守护进程感兴趣,它可以很容易地被指示监督几乎任何服务。

票数 4
EN

Server Fault用户

发布于 2013-11-16 14:14:56

我想要的是一个地方,我可以保存我的脚本,我可以在那里重新启动系统,并让它们在启动时作为守护进程启动(在任何用户登录之前),然后在它们终止时让它们自动重新启动。我希望它是稳定可靠和完全兼容的多个发行版,而不是一些后顾之忧,如暴发户。

这根本不存在。即使局限于企业linux发行版,您也会发现各种各样的init系统。

  • SysVInit: RedHatEnterpriseLinux5,11
  • 暴发户:红帽企业Linux 6
  • Systemd: Red Linux 7,SUSE Linux Enterprise 12

最“兼容”的方法是编写sysvinit脚本,因为upstart和systemd都支持它们。但是,如果服务死了,它不支持自动重新启动服务。暴发户和系统都支持这一点。

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

https://serverfault.com/questions/555397

复制
相关文章

相似问题

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