Назад | Перейти на главную страницу

pid-файл freebsd не создан

Pid-файлы не созданы в папке / var / run.

rc.d скрипт:

#!/bin/sh

. /etc/rc.subr

name=phpcgi
rcvar=phpcgi_enable
pidfile=/var/run/${name}.pid
command=/usr/local/bin/php-cgi

load_rc_config $name
run_rc_command "$1"

он работает нормально, но проблема в файле pid. он не может найти его, когда я пытаюсь "остановить службу phpcgi". разрешения верны. как я могу это исправить?

Попробуйте включить трассировку, чтобы сценарий сообщал вам, что он делает на каждом этапе. Вы получите много вывода, поэтому я бы рекомендовал записывать его с помощью script сеанс. Замените первую строку скрипта на

#!/bin/sh -x

а затем запустите:

# script phpcgi-trace
# service phpcgi start
# service phpcgi stop
# ^D

Файл phpcgi-trace будет содержать запись обо всем, что пытается сделать сценарий. Поищите в нем подсказки, почему он не сбрасывает pidfile.

РЕДАКТИРОВАТЬ

Обратите внимание, что pidfile= строка в сценарии rc должна сказать rc как проверить состояние управляемой программы или как ее остановить. Это не то, чтобы сказать rc написать pidfile - это ответственность управляемой программы.

Если phpcgi не записывает pid-файл при запуске, проще всего просто опустить pidfile= линия, и пусть rc используйте имя процесса для проверки статуса и т. д.

В pidfile Аргумент используется только сценарием rc, чтобы проверить, запущен ли уже процесс. Сценарий не создает файл за вас. Программа, которую вы запускаете, должна сама создать файл.

В качестве альтернативы вы можете добавить эту строку в конец сценария RC и файл pid должен быть создан.

echo ${rc_pid} > ${pidfile}