Pourquoi "start-stop-daemon" engendre deux process?

Le titre de la question est mon problème principal, et voici une partie de mon file SysVinit.

NAME="flask-daemon" PIDFILE="/var/run/"$NAME".pid" DAEMON="/home/ubuntu/flask/run.py" DAEMON_USER=root f_start() { echo -e "\nStarting : $NAME" start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --exec $DAEMON } 

Est-ce que quelqu'un sait où doit être l'erreur?

En outre, c'est terrible que dans cette situation, il écrit seulement le PID d'un process dans le file pid. Par conséquent, si /etc/init.d/flask-daemon stop , il ne tue que le process lié au PID considéré comme étant écrit dans le file.

Processus (Pourquoi deux?):

 ps aux | grep run.py root 3591 3.0 1.7 132700 17460 ? S 19:27 0:00 /usr/bin/python /home/ubuntu/flask/run.py root 3595 4.5 1.7 213144 18080 ? Sl 19:27 0:00 /usr/bin/python /home/ubuntu/flask/run.py root 3602 0.0 0.0 10460 948 pts/0 S+ 19:27 0:00 grep --color=auto run.py 

Fichier PID:

 $ cat /var/run/flask-daemon.pid 3591 

Juste un process a été tué …

 ps aux | grep run.py root 3595 0.3 1.7 213144 18080 ? Sl 19:27 0:00 /usr/bin/python /home/ubuntu/flask/run.py root 3613 0.0 0.0 10460 948 pts/0 S+ 19:27 0:00 grep --color=auto run.py 

Observation:> J'ai aussi essayé d'utiliser --startas , mais cela engendre aussi deux process, encore pire: il enregistre le PID de tout autre process dans /var/run/flask-daemon.py , à l'exception des PID de les démons

Devinant que vous êtes un démon fonctionne en mode démon, donc il crée une copy de lui-même quand il démarre.

Je pense que cela pourrait être ce que la partie "l" de "Sl" signifie dans la colonne STAT de votre sortie ps.

J'ai récemment utilisé python-daemon récemment et si c'est ce que votre script utilise, vous pouvez dire s'il faut ou non détacher le process dans le constructor de votre daemoncontext, dites-le simplement de ne pas le faire et vous devriez être d'or.

-OU-

n'utilisez pas start-stop-daemon et créez simplement un service systemd qui utilise l'indicateur detach_process.

-OU-

Faites les deux et dites à votre process si vous voulez détacher le process ou non.