![如何将我的守护进程变为守护进程?](https://linux22.com/image/815052/%E5%A6%82%E4%BD%95%E5%B0%86%E6%88%91%E7%9A%84%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%E5%8F%98%E4%B8%BA%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%EF%BC%9F.png)
作为 Ubuntu Accomplishments 系统的一部分,我有一个运行的守护进程以及一个连接到它的客户端。该守护进程用 Python 编写(使用 Twisted),提供 dbus 服务和处理来自客户端的请求的方法。
现在,守护进程只是我在运行客户端之前运行的一个程序,它设置 dbus 服务并提供可供客户端使用的 API。
我想将其转换为可以作为用户会话的系统服务安装和运行的东西(例如,在启动时启动)并提供启动和停止它的方法等。
问题是,我不确定我需要做什么才能正确地将其守护进程化,以便它可以作为此服务运行。我想问问其他人是否可以提供一些指导。我需要问一些事情:
- 我怎样才能将其视为为当前用户服务运行的服务(现在不是系统服务)?
- 我如何确保可以启动、停止和重新启动此会话服务?
- 打包时,如何确保它将其安装为用户会话的服务并在登录时启动等?
在回复中,如果您能指出我需要实施的具体示例或解决方案,那将会很有帮助。:-)
谢谢!
答案1
答案2
守护进程基本上是一个没有直接用户交互的程序……因此,它没有什么特别之处。不过,您必须注意一些关键点:
- 任何输出或日志都应发送到 syslog,而不是标准输出
- 在启动时,在 /var/run 下创建一个 pid 文件。并在关机时将其清除。
- 您必须编写一个服务监督文件,位于 /etc/init.d 中(现有守护进程的脚本是一个很好的灵感来源)。此脚本通常必须在正确的用户下启动守护进程,为其提供正确的配置文件等。
- 您的进程可能以 fork 开始,以与调用进程分离,但我对此并不确定,尤其是对于 python 程序而言。