Comportamento start-stop-daemon estranho?

1

Eu tenho o seguinte script:

#!/usr/bin/python3

import sys
for s in sys.argv:
    print(s)

Agora eu executo:

sudo start-stop-daemon --start --pidfile /var/run/test.pid --make-pidfile /var/run/test.pid --user max --exec /home/max/Dokumente/test.py

E a saída é:

/home/max/Dokumente/test.py
/var/run/test.pid

Minha pergunta é: por que ele usa o pidfile como argumento para o meu script e existe uma maneira de evitar isso?

Estou executando o Ubuntu 13.04 64bits.

    
por mafrasi2 29.09.2013 / 17:07

1 resposta

0

Eu deveria ter lido a página de manual com mais cuidado. O --make-pidfile não recebe argumentos, é um sinalizador:

   -m, --make-pidfile
          Used when starting a program that does not  create  its  own  pid  file.  This  option  will  make
          start-stop-daemon  create the file referenced with --pidfile and place the pid into it just before
          executing the process. Note, the file will not be removed when stopping the program.   NOTE:  This
          feature  may  not  work  in all cases. Most notably when the program being executed forks from its
          main process. Because of this, it is usually only  useful  when  combined  with  the  --background
          option.

Então, se o comando for executado como

$ sudo start-stop-daemon --start --pidfile /var/run/test.pid \ 
 --make-pidfile /var/run/test.pid --user max --exec /bin/echo

A segunda menção de /var/run/test.pid não é capturada por nenhuma opção e, portanto, é passada como um argumento para o executável sendo chamado por --exec . É por isso que é impresso quando o seu script imprime seus argumentos. A solução é simplesmente não dar nenhum argumento para --make-pidfile :

$ sudo start-stop-daemon --start --pidfile /var/run/test.pid \ 
 --make-pidfile --user max --exec /bin/echo

Parabéns ao OP que resolveu ele / ela mas já tinha aceitado minha resposta.

    
por 29.09.2013 / 19:08