我有一台 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)
您可以关闭终端并继续生活,应用程序将继续运行。现在显然无法控制该进程,只能查找并删除它(kill
、killall
等),或者让它自行退出。
如果您需要更优雅的东西,我会看看 upstart 脚本。Upstart 是 System V init 系统的替代品(即 中的文件/etc/init.d/
)。为了让您了解 Upstart 脚本的样子,您可以查看 中的现有 Upstart 作业/etc/init/
。
Upstart 网站上有一本很棒的示例手册: