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

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

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

问题是如何在 Ubuntu 中做类似的事情?我想要一些可以放入启动脚本的东西。
我的意思是我的程序在启动时不能将自己置于后台。

我试过:

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

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

答案1

使用--background选项start-stop-daemon。从手册页启动-停止守护进程(8)

-b, --background
通常用于不能自行分离的程序。此选项将强制 start-stop-daemon 在启动进程之前进行分叉,并将其强制转入后台。警告:如果进程因任何原因无法执行,start-stop-daemon 无法检查退出状态。这是最后的手段,仅适用于自行分叉毫无意义的程序,或者无法添加代码让它们自行执行此操作的程序。

在 shell 中,可以使用&如下方法将程序置于后台:

$ myprogram &
[1] 5042

答案2

如果你只是想运行某个程序并将其分离(以便它在后台运行),那么我昨天评估了六种方法最简单的方法是将命令括在括号中:

(command)

您可以关闭终端并继续生活,应用程序将继续运行。现在显然无法控制该进程,只能查找并删除它(killkillall等),或者让它自行退出。

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

Upstart 网站上有一本很棒的示例手册:

相关内容