如何将我的守护进程变为守护进程?

如何将我的守护进程变为守护进程?

作为 Ubuntu Accomplishments 系统的一部分,我有一个运行的守护进程以及一个连接到它的客户端。该守护进程用 Python 编写(使用 Twisted),提供 dbus 服务和处理来自客户端的请求的方法。

现在,守护进程只是我在运行客户端之前运行的一个程序,它设置 dbus 服务并提供可供客户端使用的 API。

我想将其转换为可以作为用户会话的系统服务安装和运行的东西(例如,在启动时启动)并提供启动和停止它的方法等。

问题是,我不确定我需要做什么才能正确地将其守护进程化,以便它可以作为此服务运行。我想问问其他人是否可以提供一些指导。我需要问一些事情:

  • 我怎样才能将其视为为当前用户服务运行的服务(现在不是系统服务)?
  • 我如何确保可以启动、停止和重新启动此会话服务?
  • 打包时,如何确保它将其安装为用户会话的服务并在登录时启动等?

在回复中,如果您能指出我需要实施的具体示例或解决方案,那将会很有帮助。:-)

谢谢!

答案1

答案2

守护进程基本上是一个没有直接用户交互的程序……因此,它没有什么特别之处。不过,您必须注意一些关键点:

  • 任何输出或日志都应发送到 syslog,而不是标准输出
  • 在启动时,在 /var/run 下创建一个 pid 文件。并在关机时将其清除。
  • 您必须编写一个服务监督文件,位于 /etc/init.d 中(现有守护进程的脚本是一个很好的灵感来源)。此脚本通常必须在正确的用户下启动守护进程,为其提供正确的配置文件等。
  • 您的进程可能以 fork 开始,以与调用进程分离,但我对此并不确定,尤其是对于 python 程序而言。

相关内容