【问题标题】:Python Service / DaemonPython 服务/守护进程
【发布时间】:2012-11-10 01:05:24
【问题描述】:

我正在编写一个 Python 脚本,我需要在启动时启动它(它应该在启动后永远运行)。我希望能够通过运行如下命令来管理服务:

sudo service my-service (and either start, stop, restart, etc.)

我已经阅读了很多内容,并且真的很想完成我的项目。我看到了这一点,但如果它要工作Linux Start-up Script,则需要帮助来实现它。我什至不确定从哪里开始,我真的不知道如何在 bash 中编程,但我对所有解决方案持开放态度。提前感谢您,感谢所有回复!

【问题讨论】:

  • 你使用的是什么 Linux 发行版?
  • 我在我的树莓派上运行一个 Debian 版本。
  • 看看/etc/init.d/目录中的一些脚本。
  • 我发现这个可能对pastebin code link有帮助。我可以重复使用它拥有的很多东西吗?如果我有任何建议,特别是因为我需要将它与 Python 脚本集成。谢谢!

标签: python linux service python-2.7 daemon


【解决方案1】:

看看zdaemon。它提供了一种简单的方式来守护 Python 进程。

然后您可以根据您的操作系统为其编写一个 init.d 脚本。 或者你可以使用像 Upstart、supervisord 这样的工具来控制守护进程。

我的 init.d 脚本(在 centos 5.8 上)如下所示:

. /etc/rc.d/init.d/functions

. /etc/sysconfig/network

APP_PATH=/path/to/your/app
PYTHON=/usr/local/bin/python
USER=user

start() {
    cd $APP_PATH
    zdaemon -C app.zdconf start
}

stop() {
    cd $APP_PATH
    zdaemon -C app.zdconf stop
}

check_status() {
        cd $APP_PATH
        zdaemon -C app.zdconf status
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        check_status
        ;;
  restart)
        stop
        start
        ;;
  *)

esac
exit 0

其中 app.zdconf 是 zdaemon 配置文件。

【讨论】: