如何将我的守护程序转为后台运行?

作为Ubuntu成就系统的一部分,我有一个守护进程和一个连接到它的客户端。守护进程是用Python(使用Twisted)编写的,提供了一个dbus服务和处理来自客户端请求的方法。
目前,守护进程只是一个在运行客户端之前我运行的程序,它设置了dbus服务并提供了一个API,可以被客户端使用。
我想将其转变为可以安装和运行为用户会话的系统服务(例如,在启动时启动),并提供启动和停止等功能。
问题是,我不确定我需要做什么才能正确地将其作为服务运行。我想问问其他人是否可以提供一些指导。我需要询问一些事情:
- 如何将其视为当前用户服务而不是系统服务? - 如何确保我可以启动、停止和重新启动这个会话服务? - 在打包时,如何确保它安装为用户会话的服务,并在登录时启动等?
如果您能指向具体的示例或解决方案,那将非常有帮助。 :-)

谢谢!

2个回答

守护进程基本上是一个没有直接用户交互的程序...所以没有什么特别的。然而,你必须注意一些关键点:
- 任何输出或日志都应该发送到syslog,而不是标准输出。 - 在启动时,在/var/run目录下创建一个pid文件,并在关闭时清除它。 - 你需要编写一个服务监控文件,放置在/etc/init.d目录下(现有守护进程的脚本是一个很好的灵感来源)。这个脚本通常需要以正确的用户身份启动守护进程,并提供正确的配置文件等。 - 你的进程可能需要通过fork来与调用进程分离,但对于Python程序来说,我不太确定。


谢谢你推荐的链接。我想我首先要弄清楚的是是否可以轻松地使用Twisted来完成这个任务。我看到有一个叫做twistd的东西,可能对此有所帮助,但我不确定从哪里开始。 - jonobacon