1

У меня есть следующий скрипт:

#!/usr/bin/python3

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

Сейчас я выполняю:

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

И вывод:

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

Мой вопрос: почему он использует pidfile в качестве аргумента для моего скрипта и есть ли способ предотвратить это?

Я использую Ubuntu 13.04 64bit.

1 ответ1

0

Я должен был внимательно прочитать страницу руководства. --make-pidfile принимает аргументов, это флаг:

   -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.

Итак, если команда запускается как

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

Второе упоминание о /var/run/test.pid не фиксируется никакими опциями и поэтому передается в качестве аргумента исполняемому файлу, вызываемому --exec . Вот почему он печатается, когда ваш скрипт печатает его аргументы. Решение состоит в том, чтобы просто не давать никаких аргументов --make-pidfile:

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

Слава ОП, который решил это сам, но уже принял мой ответ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .