有没有一种“标准”的方式来在Debian中制作守护进程?

我需要从Debian中的应用程序创build一个守护进程。 在Debian中是否有这样的标准工具,比如Ubuntu中的“upstart”? 我只需要启动 – 停止命令,作为守护进程启动一个程序,有一些选项和一个pid文件,并用pid文件杀死它。

我看着init.d,但似乎这是为了启动时启动。 我想手动启动我的守护进程。

您可以按照Debian上的/etc/init.d/skeleton文件手动创build守护进程。

您可以使用/usr/bin/service启动$ sudo service yourdaemon start和sstop $ sudo service yourdaemon stop守护进程。

只要你不把你的脚本链接到任何/etc/rc?.d目录,它就不会在启动时启动。

另一方面,你可能想看一下在Debian上不是标准的守护进程 ,但有一些有趣的function。

Debian(和Ubuntu)有init脚本中使用的帮助程序start-stop-daemon 。 它有相当多的选项来启动和跟踪守护进程。 你可以简单地写一个包装,例如

 case $1 in start) start-stop-daemon --start --exec /my/exec/prog --pidfile /my/pid/file --background ;; stop) start-stop-daemon --stop --pidfile /my/pid/file ;; esac 

要正确地为Debian进程守护进程,您需要采取几个步骤,包括从控制进程中分离出来,重新设置IO,并创build一个进程ID文件来播放。 你可以用相同名字的软件包中的daemon程序来为你做。 如果这是你想要做的,可以在StackOverflow上find答案: https ://stackoverflow.com/questions/3095566/linux-daemonize

upstart命令更类似于Debian的invoke-rc.d命令或sysvinit-utils软件包中的service命令。 他们希望在/etc/init.d中使用init脚本。 在Debian中创build一个包,并使用start-stop-daemon程序是标准的,正如你可以在/etc/init.d/skeleton例子中看到的那样。

仅仅因为你创build一个/etc/init.d/myservice脚本并不意味着它必须自动启动。 您可以使用像update-rc.d这样的工具来自动调整运行级别。 这在禁用从所有运行级别启动的服务时会有更详细的描述?