Ich arbeite mit einer django Webserver mit Standard-manage.py-Datei auszuführen, wie kann ich daemonize es svc mit daemontoolsWie django Server mit daemontools
Inhalt meiner Lauf-Datei in daemontools ist
#!/bin/bash
exec setuidgid <myuser> /usr/bin/python <path/to/manage.py> runserver 2>&1
der Inhalt des manage.py
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE","settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
Das Kind Prozess (manage.py runserver) von svscanboot abzweigt einem anderen Prozess in execute_from_command_line (von django.c importiert ore.management) -Funktion, die nicht über SVC-Befehle gesteuert werden kann. Unten ist der Prozessbaum für svscanboot.
/bin/sh /usr/bin/svscanboot
\_ svscan /etc/service
\_ supervise myapp
\_ /usr/bin/python </path/to/manage.py> runserver
\_ /usr/bin/python </path/to/manage.py> runserver
Nun, wenn ich svc ausführen -d sendet er das Signal TERM an den ersten runserver Prozess, und als Ergebnis nur, dass getötet wird und der zweite Prozess wird eine Waise Prozess, der nicht durch SVC-Befehle gesteuert werden können.
Also wie kontrolliere ich den gesamten Prozessbaum des Kindprozesses mit Daemontools?
Warum möchten Sie das tun? Der Server ist nicht für den produktiven Einsatz gedacht, Sie sollten nicht versuchen, ihn automatisch auszuführen. –