【问题标题】:Python script as daemon in ubuntuPython 脚本作为 ubuntu 中的守护进程
【发布时间】:2013-06-20 02:46:58
【问题描述】:

我创建了一个守护进程来运行 python 脚本。但每当我从我的 ubuntu 机器注销时它就会停止。

DAEMON=sudo python /var/www/some_dir/my_python.py
ARGS=/var/www/some_dir/my_python.py
PIDFILE=/var/www/some_dir/my_python.pid

test -x $DAEMON || exit 0

#set -e

case "$1" in
start)
    echo -n "Starting $DESC: "
    start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON &
    echo "$NAME."
    ;;
stop)
    echo -n "Stopping $DESC: "
    start-stop-daemon --stop --pidfile $PIFDILE --exec $DAEMON
    echo "$NAME."
    ;;
restart|force-reload)
    echo -n "Restarting $DESC: "
    start-stop-daemon --stop --pidfile $PIDFILE --exec $DAEMON
    sleep 1
    start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON &
    echo "$NAME."
    ;;
*)
    N=/etc/init.d/$NAME
    echo "Usage: $N {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
esac
exit 0

谁能告诉我该怎么做。

【问题讨论】:

  • 也许这可以帮助您:[在用户登录注销时启动和停止守护程序][1] [1]:*.com/questions/3950585/…
  • 我使用“sudo /etc/init.d/my_python start”
  • 我原以为start-stop-daemon 会处理所有事情......显然它不会。尝试在 Python 脚本中捕获 SIGHUP 信号。将输出重定向到文件或/dev/null 也可能是明智的。
  • 我也试过了。它不起作用。

标签: python ubuntu daemon


【解决方案1】:

很久没问这个问题了,今天遇到这种情况。

要在后台启动进程,请使用

start-stop-daemon -Sbm --pidfile $PIDFILE --exec $DAEMON

停止它:

start-stop-daemon -K --pidfile $PIDFILE

来自start-stop-daemon man page

-b , -背景

强制守护进程进入后台。一些守护进程不创建 pidfiles,所以一个很好的技巧是让守护进程在 前景,并将此选项与 -m , -make-pidfile 一起使用 创建一个工作 pidfile。 -m , -make-pidfile

将守护进程的pid保存在-p、-pidfile指定的文件中 选项。仅在与在前台运行的守护程序一起使用时有用 并使用 --b, -background 选项强制进入后台。

【讨论】:

    【解决方案2】:

    尝试从您的 start-stop-daemon 调用中删除 &。此外,您应该阅读如何编写更合适的 initscripts,因为您的 initscript 中还有其他几个错误。

    【讨论】:

    • 我注销后守护进程仍然停止。
    • wRAR 有没有其他方法可以在后台运行 python 脚本?
    最近更新 更多