如何将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)
您可以关闭终端并继续生活,应用程序将继续运行。 显然没有对这个过程的控制,因为它没有查找和核对它( kill
, killall
等),或者它自行退出。
如果你需要一些更优雅的东西,我会看一下upstart脚本。 Upstart是System V init系统的替代品(即/etc/init.d/
的文件)。 为了让您了解Upstart脚本的外观,您可以在/etc/init/
看到现有的Upstart作业。
在Upstart网站上有一个可爱的例子: