如何在Ubuntu上守护服务器?

我的Ubuntu上有几台服务器,需要重新启动守护进程。 我如何用通用的init第一个进程来做到这一点? 我应该换成暴发户还是其他替代品?

现有的SysInit系统会为你处理。 Ubuntu有关于他们在做什么的文档 。 是的,他们正在转向新贵 。

如果你的程序在前台运行,我build议Runit ,它是前面提到的daemontools的替代品,也是Sys-V风格init的替代品。 在Ubuntu上,Runit作为一个软件包提供,并具有在Upstart启动系统时启动的必要脚本。

我们将Runit用于所有非系统安装的软件包,比如Rails应用程序,所以我们不必pipe理init脚本; 我们只需在适当的“运行”脚本中popup启动命令,然后释放它。 这简化了任何需要在启动时启动的新程序的部署,并且是一个非常强大和可靠的系统,避免了pipe理PID和锁文件的需要,因为Runit可以处理这个问题。

Daemontools对于这类事情绝对是非常棒的。 KISS级简单,强大,并鼓励在相关领域(伐木等)的良好做法。

如果进程是基于networking的,您可以使用xinetd。 否则,新贵和sysvinit是你的工具。

守护进程:www.clapper.org/software/daemonize/可以通过将代码封装在一个C封装器中来处理,封装器在执行之前进行守护进程。

您也可以简单地将它们添加到/ etc / inittab。 很多人会(也许是正确的)说这是邪恶的,因为没有人会想到在那里看到,我已经看到使用这种技术的生产系统,事实上它运作良好。

也许你也可以查看monit,它可以确保进程正在运行,并在必要时重新启动它们。 尽pipe它是在Linux-HA环境下构build的。

通常我会为每个新进程创build一个新的init脚本,但是我通常不会像这样一次部署4个或5个脚本。 也许想想如何构build它们,并把它们放在一个它们提供的服务的init脚本之下。

“@reboot”是Ubuntu默认cron守护进程中的一个有效的macros(如果我没有记错的话,可以使用vixie-cron 4.x)。 所以启动一个守护进程可以很简单

crontab -e @reboot /usr/local/bin/daemon 

这将使你的守护进程在重启后出现,但是假设你的守护进程不会自动死掉。 你也可以使用“保持一个运行”,我认为它将成为11.10(“@reboot / usr / bin / keep-one-running / usr / local / bin / daemon” )。

编辑 – 哦,旧的问题,无论出于何种原因重新出现在活动标签…