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}