如何将FreeBSD守护进程移植到Ubuntu?

我有一台FreeBSD机器,它有一个/usr/sbin/daemon命令可以在后台运行我的程序。

问题是如何在Ubuntu中做类似的事情? 我想在启动脚本中添加一些东西。
我的意思是我的程序在启动时无法将自己置于后台。

我试过了:

 start-stop-daemon --start --quiet --pidfile $PIDSPATH/$PIDFILE --exec $DAEMON 

但它只是启动程序,我必须等待它完成。

使用start-stop-daemon--background选项。 从start-stop-daemon手册页(8) :

-b, – background
通常用于不自行分离的程序。 此选项将强制start-stop-daemon在启动进程之前进行分叉,并将其强制进入后台。 警告:如果进程因任何原因无法执行,则start-stop-daemon无法检查退出状态。 这是最后的手段,仅适用于那些无法自行分叉的程序,或者为自己添加代码而无法自行完成的程序。

在shell中,程序可以使用以下方式进行后台处理:

 $ myprogram & [1] 5042 

如果您只是想运行某些东西并将其分离(因此它在后台运行) ,我昨天评估了六种方法 。 最简单的方法是将命令包装在括号中:

 (command) 

您可以关闭终端并继续生活,应用程序将继续运行。 显然没有对这个过程的控制,因为它没有查找和核对它( killkillall等),或者它自行退出。

如果你需要一些更优雅的东西,我会看一下upstart脚本。 Upstart是System V init系统的替代品(即/etc/init.d/的文件)。 为了让您了解Upstart脚本的外观,您可以在/etc/init/看到现有的Upstart作业。

在Upstart网站上有一个可爱的例子: